#ifndef __IM_KEY_CODES_H__
#define __IM_KEY_CODES_H__

#include <im_base_types.h>
#include <im_string.h>
/**
 * @defgroup IMKeyCodes
 * @ingroup PublicIME
 * @{
 */

/**
 * A IMUInt32 is used to represent a key press or release code.
 *
 * The format of a key code is:
 * Bit 31    (1bit) : Key release mask. Set to indicate a key release event.
 * Bit 21-30 (10bit): Modifiers' masks, such as shift, capslock, ctrl, alt, etc.
 * Bit 0-20  (21bit): Key code.
 *
 * Normally a Key code is a UCS-4 code (21bit). The key events that
 * do not have corresponding UCS-4 code, such as modifier keys and
 * function keys, are mapped into 0x110000-0x11ffff area
 * to prevent from interfering with valid UCS-4 codes.
 * All codes in 0x120000-0x1fffff are reserved for internal usage.
 */

IM_BEGIN_DECLS

typedef enum
{
    IM_KEY_SHIFT_MASK       = (1<<21),
    IM_KEY_CAPS_LOCK_MASK   = (1<<22),
    IM_KEY_CTRL_MASK        = (1<<23),
    IM_KEY_ALT_MASK         = (1<<24),
    IM_KEY_META_MASK        = (1<<25),
    IM_KEY_SUPER_MASK       = (1<<26),
    IM_KEY_HYPER_MASK       = (1<<27),
    IM_KEY_NUM_LOCK_MASK    = (1<<28),
    IM_KEY_RELEASE_MASK     = (1<<31),
    IM_KEY_ALL_MASKS        = (IM_KEY_RELEASE_MASK | (0xFF << 21))
} IMKeyMask;

typedef enum
{
    IM_KEY_INVALID                      = 0,
    IM_KEY_SPECIAL_START                = 0x110000,
    IM_KEY_SPECIAL_END                  = 0x11ffff,
    IM_KEY_MAX_VALID_CODE               = 0x11ffff,
    IM_KEY_CODE_MASK                    = 0x1fffff,

    /* Following content are copied from ../utils/im_key_codes.h,
     * generated by ../utils/mkkeys
     */

    /* Special key codes */
    IM_KEY_topleftsummation             = 0x1108b1,    /* X11 keysym = 0x08b1:   */
    IM_KEY_botleftsummation             = 0x1108b2,    /* X11 keysym = 0x08b2:   */
    IM_KEY_topvertsummationconnector    = 0x1108b3,    /* X11 keysym = 0x08b3:   */
    IM_KEY_botvertsummationconnector    = 0x1108b4,    /* X11 keysym = 0x08b4:   */
    IM_KEY_toprightsummation            = 0x1108b5,    /* X11 keysym = 0x08b5:   */
    IM_KEY_botrightsummation            = 0x1108b6,    /* X11 keysym = 0x08b6:   */
    IM_KEY_rightmiddlesummation         = 0x1108b7,    /* X11 keysym = 0x08b7:   */
    IM_KEY_marker                       = 0x110abf,    /* X11 keysym = 0x0abf:   */
    IM_KEY_trademarkincircle            = 0x110acb,    /* X11 keysym = 0x0acb:   */
    IM_KEY_hexagram                     = 0x110ada,    /* X11 keysym = 0x0ada:   */
    IM_KEY_cursor                       = 0x110aff,    /* X11 keysym = 0x0aff:   */
    IM_KEY_Hangul_KkogjiDalrinIeung     = 0x110ef3,    /* X11 keysym = 0x0ef3:   */
    IM_KEY_Hangul_J_KkogjiDalrinIeung   = 0x110ef9,    /* X11 keysym = 0x0ef9:   */
    IM_KEY_3270_Duplicate               = 0x11fd01,    /* X11 keysym = 0xfd01:   */
    IM_KEY_3270_FieldMark               = 0x11fd02,    /* X11 keysym = 0xfd02:   */
    IM_KEY_3270_Right2                  = 0x11fd03,    /* X11 keysym = 0xfd03:   */
    IM_KEY_3270_Left2                   = 0x11fd04,    /* X11 keysym = 0xfd04:   */
    IM_KEY_3270_BackTab                 = 0x11fd05,    /* X11 keysym = 0xfd05:   */
    IM_KEY_3270_EraseEOF                = 0x11fd06,    /* X11 keysym = 0xfd06:   */
    IM_KEY_3270_EraseInput              = 0x11fd07,    /* X11 keysym = 0xfd07:   */
    IM_KEY_3270_Reset                   = 0x11fd08,    /* X11 keysym = 0xfd08:   */
    IM_KEY_3270_Quit                    = 0x11fd09,    /* X11 keysym = 0xfd09:   */
    IM_KEY_3270_PA1                     = 0x11fd0a,    /* X11 keysym = 0xfd0a:   */
    IM_KEY_3270_PA2                     = 0x11fd0b,    /* X11 keysym = 0xfd0b:   */
    IM_KEY_3270_PA3                     = 0x11fd0c,    /* X11 keysym = 0xfd0c:   */
    IM_KEY_3270_Test                    = 0x11fd0d,    /* X11 keysym = 0xfd0d:   */
    IM_KEY_3270_Attn                    = 0x11fd0e,    /* X11 keysym = 0xfd0e:   */
    IM_KEY_3270_CursorBlink             = 0x11fd0f,    /* X11 keysym = 0xfd0f:   */
    IM_KEY_3270_AltCursor               = 0x11fd10,    /* X11 keysym = 0xfd10:   */
    IM_KEY_3270_KeyClick                = 0x11fd11,    /* X11 keysym = 0xfd11:   */
    IM_KEY_3270_Jump                    = 0x11fd12,    /* X11 keysym = 0xfd12:   */
    IM_KEY_3270_Ident                   = 0x11fd13,    /* X11 keysym = 0xfd13:   */
    IM_KEY_3270_Rule                    = 0x11fd14,    /* X11 keysym = 0xfd14:   */
    IM_KEY_3270_Copy                    = 0x11fd15,    /* X11 keysym = 0xfd15:   */
    IM_KEY_3270_Play                    = 0x11fd16,    /* X11 keysym = 0xfd16:   */
    IM_KEY_3270_Setup                   = 0x11fd17,    /* X11 keysym = 0xfd17:   */
    IM_KEY_3270_Record                  = 0x11fd18,    /* X11 keysym = 0xfd18:   */
    IM_KEY_3270_ChangeScreen            = 0x11fd19,    /* X11 keysym = 0xfd19:   */
    IM_KEY_3270_DeleteWord              = 0x11fd1a,    /* X11 keysym = 0xfd1a:   */
    IM_KEY_3270_ExSelect                = 0x11fd1b,    /* X11 keysym = 0xfd1b:   */
    IM_KEY_3270_CursorSelect            = 0x11fd1c,    /* X11 keysym = 0xfd1c:   */
    IM_KEY_3270_PrintScreen             = 0x11fd1d,    /* X11 keysym = 0xfd1d:   */
    IM_KEY_3270_Enter                   = 0x11fd1e,    /* X11 keysym = 0xfd1e:   */
    IM_KEY_ISO_Lock                     = 0x11fe01,    /* X11 keysym = 0xfe01:   */
    IM_KEY_ISO_Level2_Latch             = 0x11fe02,    /* X11 keysym = 0xfe02:   */
    IM_KEY_ISO_Level3_Shift             = 0x11fe03,    /* X11 keysym = 0xfe03:   */
    IM_KEY_ISO_Level3_Latch             = 0x11fe04,    /* X11 keysym = 0xfe04:   */
    IM_KEY_ISO_Level3_Lock              = 0x11fe05,    /* X11 keysym = 0xfe05:   */
    IM_KEY_ISO_Group_Latch              = 0x11fe06,    /* X11 keysym = 0xfe06:   */
    IM_KEY_ISO_Group_Lock               = 0x11fe07,    /* X11 keysym = 0xfe07:   */
    IM_KEY_ISO_Next_Group               = 0x11fe08,    /* X11 keysym = 0xfe08:   */
    IM_KEY_ISO_Next_Group_Lock          = 0x11fe09,    /* X11 keysym = 0xfe09:   */
    IM_KEY_ISO_Prev_Group               = 0x11fe0a,    /* X11 keysym = 0xfe0a:   */
    IM_KEY_ISO_Prev_Group_Lock          = 0x11fe0b,    /* X11 keysym = 0xfe0b:   */
    IM_KEY_ISO_First_Group              = 0x11fe0c,    /* X11 keysym = 0xfe0c:   */
    IM_KEY_ISO_First_Group_Lock         = 0x11fe0d,    /* X11 keysym = 0xfe0d:   */
    IM_KEY_ISO_Last_Group               = 0x11fe0e,    /* X11 keysym = 0xfe0e:   */
    IM_KEY_ISO_Last_Group_Lock          = 0x11fe0f,    /* X11 keysym = 0xfe0f:   */
    IM_KEY_ISO_Left_Tab                 = 0x11fe20,    /* X11 keysym = 0xfe20:   */
    IM_KEY_ISO_Move_Line_Up             = 0x11fe21,    /* X11 keysym = 0xfe21:   */
    IM_KEY_ISO_Move_Line_Down           = 0x11fe22,    /* X11 keysym = 0xfe22:   */
    IM_KEY_ISO_Partial_Line_Up          = 0x11fe23,    /* X11 keysym = 0xfe23:   */
    IM_KEY_ISO_Partial_Line_Down        = 0x11fe24,    /* X11 keysym = 0xfe24:   */
    IM_KEY_ISO_Partial_Space_Left       = 0x11fe25,    /* X11 keysym = 0xfe25:   */
    IM_KEY_ISO_Partial_Space_Right      = 0x11fe26,    /* X11 keysym = 0xfe26:   */
    IM_KEY_ISO_Set_Margin_Left          = 0x11fe27,    /* X11 keysym = 0xfe27:   */
    IM_KEY_ISO_Set_Margin_Right         = 0x11fe28,    /* X11 keysym = 0xfe28:   */
    IM_KEY_ISO_Release_Margin_Left      = 0x11fe29,    /* X11 keysym = 0xfe29:   */
    IM_KEY_ISO_Release_Margin_Right     = 0x11fe2a,    /* X11 keysym = 0xfe2a:   */
    IM_KEY_ISO_Release_Both_Margins     = 0x11fe2b,    /* X11 keysym = 0xfe2b:   */
    IM_KEY_ISO_Fast_Cursor_Left         = 0x11fe2c,    /* X11 keysym = 0xfe2c:   */
    IM_KEY_ISO_Fast_Cursor_Right        = 0x11fe2d,    /* X11 keysym = 0xfe2d:   */
    IM_KEY_ISO_Fast_Cursor_Up           = 0x11fe2e,    /* X11 keysym = 0xfe2e:   */
    IM_KEY_ISO_Fast_Cursor_Down         = 0x11fe2f,    /* X11 keysym = 0xfe2f:   */
    IM_KEY_ISO_Continuous_Underline     = 0x11fe30,    /* X11 keysym = 0xfe30:   */
    IM_KEY_ISO_Discontinuous_Underline  = 0x11fe31,    /* X11 keysym = 0xfe31:   */
    IM_KEY_ISO_Emphasize                = 0x11fe32,    /* X11 keysym = 0xfe32:   */
    IM_KEY_ISO_Center_Object            = 0x11fe33,    /* X11 keysym = 0xfe33:   */
    IM_KEY_ISO_Enter                    = 0x11fe34,    /* X11 keysym = 0xfe34:   */
    IM_KEY_dead_grave                   = 0x11fe50,    /* X11 keysym = 0xfe50:   */
    IM_KEY_dead_acute                   = 0x11fe51,    /* X11 keysym = 0xfe51:   */
    IM_KEY_dead_circumflex              = 0x11fe52,    /* X11 keysym = 0xfe52:   */
    IM_KEY_dead_tilde                   = 0x11fe53,    /* X11 keysym = 0xfe53:   */
    IM_KEY_dead_macron                  = 0x11fe54,    /* X11 keysym = 0xfe54:   */
    IM_KEY_dead_breve                   = 0x11fe55,    /* X11 keysym = 0xfe55:   */
    IM_KEY_dead_abovedot                = 0x11fe56,    /* X11 keysym = 0xfe56:   */
    IM_KEY_dead_diaeresis               = 0x11fe57,    /* X11 keysym = 0xfe57:   */
    IM_KEY_dead_abovering               = 0x11fe58,    /* X11 keysym = 0xfe58:   */
    IM_KEY_dead_doubleacute             = 0x11fe59,    /* X11 keysym = 0xfe59:   */
    IM_KEY_dead_caron                   = 0x11fe5a,    /* X11 keysym = 0xfe5a:   */
    IM_KEY_dead_cedilla                 = 0x11fe5b,    /* X11 keysym = 0xfe5b:   */
    IM_KEY_dead_ogonek                  = 0x11fe5c,    /* X11 keysym = 0xfe5c:   */
    IM_KEY_dead_iota                    = 0x11fe5d,    /* X11 keysym = 0xfe5d:   */
    IM_KEY_dead_voiced_sound            = 0x11fe5e,    /* X11 keysym = 0xfe5e:   */
    IM_KEY_dead_semivoiced_sound        = 0x11fe5f,    /* X11 keysym = 0xfe5f:   */
    IM_KEY_dead_belowdot                = 0x11fe60,    /* X11 keysym = 0xfe60:   */
    IM_KEY_dead_hook                    = 0x11fe61,    /* X11 keysym = 0xfe61:   */
    IM_KEY_dead_horn                    = 0x11fe62,    /* X11 keysym = 0xfe62:   */
    IM_KEY_AccessX_Enable               = 0x11fe70,    /* X11 keysym = 0xfe70:   */
    IM_KEY_AccessX_Feedback_Enable      = 0x11fe71,    /* X11 keysym = 0xfe71:   */
    IM_KEY_RepeatKeys_Enable            = 0x11fe72,    /* X11 keysym = 0xfe72:   */
    IM_KEY_SlowKeys_Enable              = 0x11fe73,    /* X11 keysym = 0xfe73:   */
    IM_KEY_BounceKeys_Enable            = 0x11fe74,    /* X11 keysym = 0xfe74:   */
    IM_KEY_StickyKeys_Enable            = 0x11fe75,    /* X11 keysym = 0xfe75:   */
    IM_KEY_MouseKeys_Enable             = 0x11fe76,    /* X11 keysym = 0xfe76:   */
    IM_KEY_MouseKeys_Accel_Enable       = 0x11fe77,    /* X11 keysym = 0xfe77:   */
    IM_KEY_Overlay1_Enable              = 0x11fe78,    /* X11 keysym = 0xfe78:   */
    IM_KEY_Overlay2_Enable              = 0x11fe79,    /* X11 keysym = 0xfe79:   */
    IM_KEY_AudibleBell_Enable           = 0x11fe7a,    /* X11 keysym = 0xfe7a:   */
    IM_KEY_First_Virtual_Screen         = 0x11fed0,    /* X11 keysym = 0xfed0:   */
    IM_KEY_Prev_Virtual_Screen          = 0x11fed1,    /* X11 keysym = 0xfed1:   */
    IM_KEY_Next_Virtual_Screen          = 0x11fed2,    /* X11 keysym = 0xfed2:   */
    IM_KEY_Last_Virtual_Screen          = 0x11fed4,    /* X11 keysym = 0xfed4:   */
    IM_KEY_Terminate_Server             = 0x11fed5,    /* X11 keysym = 0xfed5:   */
    IM_KEY_Pointer_Left                 = 0x11fee0,    /* X11 keysym = 0xfee0:   */
    IM_KEY_Pointer_Right                = 0x11fee1,    /* X11 keysym = 0xfee1:   */
    IM_KEY_Pointer_Up                   = 0x11fee2,    /* X11 keysym = 0xfee2:   */
    IM_KEY_Pointer_Down                 = 0x11fee3,    /* X11 keysym = 0xfee3:   */
    IM_KEY_Pointer_UpLeft               = 0x11fee4,    /* X11 keysym = 0xfee4:   */
    IM_KEY_Pointer_UpRight              = 0x11fee5,    /* X11 keysym = 0xfee5:   */
    IM_KEY_Pointer_DownLeft             = 0x11fee6,    /* X11 keysym = 0xfee6:   */
    IM_KEY_Pointer_DownRight            = 0x11fee7,    /* X11 keysym = 0xfee7:   */
    IM_KEY_Pointer_Button_Dflt          = 0x11fee8,    /* X11 keysym = 0xfee8:   */
    IM_KEY_Pointer_Button1              = 0x11fee9,    /* X11 keysym = 0xfee9:   */
    IM_KEY_Pointer_Button2              = 0x11feea,    /* X11 keysym = 0xfeea:   */
    IM_KEY_Pointer_Button3              = 0x11feeb,    /* X11 keysym = 0xfeeb:   */
    IM_KEY_Pointer_Button4              = 0x11feec,    /* X11 keysym = 0xfeec:   */
    IM_KEY_Pointer_Button5              = 0x11feed,    /* X11 keysym = 0xfeed:   */
    IM_KEY_Pointer_DblClick_Dflt        = 0x11feee,    /* X11 keysym = 0xfeee:   */
    IM_KEY_Pointer_DblClick1            = 0x11feef,    /* X11 keysym = 0xfeef:   */
    IM_KEY_Pointer_DblClick2            = 0x11fef0,    /* X11 keysym = 0xfef0:   */
    IM_KEY_Pointer_DblClick3            = 0x11fef1,    /* X11 keysym = 0xfef1:   */
    IM_KEY_Pointer_DblClick4            = 0x11fef2,    /* X11 keysym = 0xfef2:   */
    IM_KEY_Pointer_DblClick5            = 0x11fef3,    /* X11 keysym = 0xfef3:   */
    IM_KEY_Pointer_Drag_Dflt            = 0x11fef4,    /* X11 keysym = 0xfef4:   */
    IM_KEY_Pointer_Drag1                = 0x11fef5,    /* X11 keysym = 0xfef5:   */
    IM_KEY_Pointer_Drag2                = 0x11fef6,    /* X11 keysym = 0xfef6:   */
    IM_KEY_Pointer_Drag3                = 0x11fef7,    /* X11 keysym = 0xfef7:   */
    IM_KEY_Pointer_Drag4                = 0x11fef8,    /* X11 keysym = 0xfef8:   */
    IM_KEY_Pointer_EnableKeys           = 0x11fef9,    /* X11 keysym = 0xfef9:   */
    IM_KEY_Pointer_Accelerate           = 0x11fefa,    /* X11 keysym = 0xfefa:   */
    IM_KEY_Pointer_DfltBtnNext          = 0x11fefb,    /* X11 keysym = 0xfefb:   */
    IM_KEY_Pointer_DfltBtnPrev          = 0x11fefc,    /* X11 keysym = 0xfefc:   */
    IM_KEY_Pointer_Drag5                = 0x11fefd,    /* X11 keysym = 0xfefd:   */
    IM_KEY_Clear                        = 0x11ff0b,    /* X11 keysym = 0xff0b:   */
    IM_KEY_Pause                        = 0x11ff13,    /* X11 keysym = 0xff13:   */
    IM_KEY_Scroll_Lock                  = 0x11ff14,    /* X11 keysym = 0xff14:   */
    IM_KEY_Sys_Req                      = 0x11ff15,    /* X11 keysym = 0xff15:   */
    IM_KEY_Escape                       = 0x11ff1b,    /* X11 keysym = 0xff1b:   */
    IM_KEY_Multi_key                    = 0x11ff20,    /* X11 keysym = 0xff20:   */
    IM_KEY_Kanji                        = 0x11ff21,    /* X11 keysym = 0xff21:   */
    IM_KEY_Muhenkan                     = 0x11ff22,    /* X11 keysym = 0xff22:   */
    IM_KEY_Henkan_Mode                  = 0x11ff23,    /* X11 keysym = 0xff23:   */
    IM_KEY_Romaji                       = 0x11ff24,    /* X11 keysym = 0xff24:   */
    IM_KEY_Hiragana                     = 0x11ff25,    /* X11 keysym = 0xff25:   */
    IM_KEY_Katakana                     = 0x11ff26,    /* X11 keysym = 0xff26:   */
    IM_KEY_Hiragana_Katakana            = 0x11ff27,    /* X11 keysym = 0xff27:   */
    IM_KEY_Zenkaku                      = 0x11ff28,    /* X11 keysym = 0xff28:   */
    IM_KEY_Hankaku                      = 0x11ff29,    /* X11 keysym = 0xff29:   */
    IM_KEY_Zenkaku_Hankaku              = 0x11ff2a,    /* X11 keysym = 0xff2a:   */
    IM_KEY_Touroku                      = 0x11ff2b,    /* X11 keysym = 0xff2b:   */
    IM_KEY_Massyo                       = 0x11ff2c,    /* X11 keysym = 0xff2c:   */
    IM_KEY_Kana_Lock                    = 0x11ff2d,    /* X11 keysym = 0xff2d:   */
    IM_KEY_Kana_Shift                   = 0x11ff2e,    /* X11 keysym = 0xff2e:   */
    IM_KEY_Eisu_Shift                   = 0x11ff2f,    /* X11 keysym = 0xff2f:   */
    IM_KEY_Eisu_toggle                  = 0x11ff30,    /* X11 keysym = 0xff30:   */
    IM_KEY_Hangul                       = 0x11ff31,    /* X11 keysym = 0xff31:   */
    IM_KEY_Hangul_Start                 = 0x11ff32,    /* X11 keysym = 0xff32:   */
    IM_KEY_Hangul_End                   = 0x11ff33,    /* X11 keysym = 0xff33:   */
    IM_KEY_Hangul_Hanja                 = 0x11ff34,    /* X11 keysym = 0xff34:   */
    IM_KEY_Hangul_Jamo                  = 0x11ff35,    /* X11 keysym = 0xff35:   */
    IM_KEY_Hangul_Romaja                = 0x11ff36,    /* X11 keysym = 0xff36:   */
    IM_KEY_Codeinput                    = 0x11ff37,    /* X11 keysym = 0xff37:   */
    IM_KEY_Hangul_Jeonja                = 0x11ff38,    /* X11 keysym = 0xff38:   */
    IM_KEY_Hangul_Banja                 = 0x11ff39,    /* X11 keysym = 0xff39:   */
    IM_KEY_Hangul_PreHanja              = 0x11ff3a,    /* X11 keysym = 0xff3a:   */
    IM_KEY_Hangul_PostHanja             = 0x11ff3b,    /* X11 keysym = 0xff3b:   */
    IM_KEY_SingleCandidate              = 0x11ff3c,    /* X11 keysym = 0xff3c:   */
    IM_KEY_MultipleCandidate            = 0x11ff3d,    /* X11 keysym = 0xff3d:   */
    IM_KEY_PreviousCandidate            = 0x11ff3e,    /* X11 keysym = 0xff3e:   */
    IM_KEY_Hangul_Special               = 0x11ff3f,    /* X11 keysym = 0xff3f:   */
    IM_KEY_Home                         = 0x11ff50,    /* X11 keysym = 0xff50:   */
    IM_KEY_Left                         = 0x11ff51,    /* X11 keysym = 0xff51:   */
    IM_KEY_Up                           = 0x11ff52,    /* X11 keysym = 0xff52:   */
    IM_KEY_Right                        = 0x11ff53,    /* X11 keysym = 0xff53:   */
    IM_KEY_Down                         = 0x11ff54,    /* X11 keysym = 0xff54:   */
    IM_KEY_Page_Up                      = 0x11ff55,    /* X11 keysym = 0xff55:   */
    IM_KEY_Page_Down                    = 0x11ff56,    /* X11 keysym = 0xff56:   */
    IM_KEY_End                          = 0x11ff57,    /* X11 keysym = 0xff57:   */
    IM_KEY_Begin                        = 0x11ff58,    /* X11 keysym = 0xff58:   */
    IM_KEY_Select                       = 0x11ff60,    /* X11 keysym = 0xff60:   */
    IM_KEY_Print                        = 0x11ff61,    /* X11 keysym = 0xff61:   */
    IM_KEY_Execute                      = 0x11ff62,    /* X11 keysym = 0xff62:   */
    IM_KEY_Insert                       = 0x11ff63,    /* X11 keysym = 0xff63:   */
    IM_KEY_Undo                         = 0x11ff65,    /* X11 keysym = 0xff65:   */
    IM_KEY_Redo                         = 0x11ff66,    /* X11 keysym = 0xff66:   */
    IM_KEY_Menu                         = 0x11ff67,    /* X11 keysym = 0xff67:   */
    IM_KEY_Find                         = 0x11ff68,    /* X11 keysym = 0xff68:   */
    IM_KEY_Cancel                       = 0x11ff69,    /* X11 keysym = 0xff69:   */
    IM_KEY_Help                         = 0x11ff6a,    /* X11 keysym = 0xff6a:   */
    IM_KEY_Break                        = 0x11ff6b,    /* X11 keysym = 0xff6b:   */
    IM_KEY_Mode_switch                  = 0x11ff7e,    /* X11 keysym = 0xff7e:   */
    IM_KEY_Num_Lock                     = 0x11ff7f,    /* X11 keysym = 0xff7f:   */
    IM_KEY_KP_Space                     = 0x11ff80,    /* X11 keysym = 0xff80:   */
    IM_KEY_KP_Tab                       = 0x11ff89,    /* X11 keysym = 0xff89:   */
    IM_KEY_KP_Enter                     = 0x11ff8d,    /* X11 keysym = 0xff8d:   */
    IM_KEY_KP_F1                        = 0x11ff91,    /* X11 keysym = 0xff91:   */
    IM_KEY_KP_F2                        = 0x11ff92,    /* X11 keysym = 0xff92:   */
    IM_KEY_KP_F3                        = 0x11ff93,    /* X11 keysym = 0xff93:   */
    IM_KEY_KP_F4                        = 0x11ff94,    /* X11 keysym = 0xff94:   */
    IM_KEY_KP_Home                      = 0x11ff95,    /* X11 keysym = 0xff95:   */
    IM_KEY_KP_Left                      = 0x11ff96,    /* X11 keysym = 0xff96:   */
    IM_KEY_KP_Up                        = 0x11ff97,    /* X11 keysym = 0xff97:   */
    IM_KEY_KP_Right                     = 0x11ff98,    /* X11 keysym = 0xff98:   */
    IM_KEY_KP_Down                      = 0x11ff99,    /* X11 keysym = 0xff99:   */
    IM_KEY_KP_Page_Up                   = 0x11ff9a,    /* X11 keysym = 0xff9a:   */
    IM_KEY_KP_Page_Down                 = 0x11ff9b,    /* X11 keysym = 0xff9b:   */
    IM_KEY_KP_End                       = 0x11ff9c,    /* X11 keysym = 0xff9c:   */
    IM_KEY_KP_Begin                     = 0x11ff9d,    /* X11 keysym = 0xff9d:   */
    IM_KEY_KP_Insert                    = 0x11ff9e,    /* X11 keysym = 0xff9e:   */
    IM_KEY_KP_Delete                    = 0x11ff9f,    /* X11 keysym = 0xff9f:   */
    IM_KEY_KP_Multiply                  = 0x11ffaa,    /* X11 keysym = 0xffaa:   */
    IM_KEY_KP_Add                       = 0x11ffab,    /* X11 keysym = 0xffab:   */
    IM_KEY_KP_Separator                 = 0x11ffac,    /* X11 keysym = 0xffac:   */
    IM_KEY_KP_Subtract                  = 0x11ffad,    /* X11 keysym = 0xffad:   */
    IM_KEY_KP_Decimal                   = 0x11ffae,    /* X11 keysym = 0xffae:   */
    IM_KEY_KP_Divide                    = 0x11ffaf,    /* X11 keysym = 0xffaf:   */
    IM_KEY_KP_0                         = 0x11ffb0,    /* X11 keysym = 0xffb0:   */
    IM_KEY_KP_1                         = 0x11ffb1,    /* X11 keysym = 0xffb1:   */
    IM_KEY_KP_2                         = 0x11ffb2,    /* X11 keysym = 0xffb2:   */
    IM_KEY_KP_3                         = 0x11ffb3,    /* X11 keysym = 0xffb3:   */
    IM_KEY_KP_4                         = 0x11ffb4,    /* X11 keysym = 0xffb4:   */
    IM_KEY_KP_5                         = 0x11ffb5,    /* X11 keysym = 0xffb5:   */
    IM_KEY_KP_6                         = 0x11ffb6,    /* X11 keysym = 0xffb6:   */
    IM_KEY_KP_7                         = 0x11ffb7,    /* X11 keysym = 0xffb7:   */
    IM_KEY_KP_8                         = 0x11ffb8,    /* X11 keysym = 0xffb8:   */
    IM_KEY_KP_9                         = 0x11ffb9,    /* X11 keysym = 0xffb9:   */
    IM_KEY_KP_Equal                     = 0x11ffbd,    /* X11 keysym = 0xffbd:   */
    IM_KEY_F1                           = 0x11ffbe,    /* X11 keysym = 0xffbe:   */
    IM_KEY_F2                           = 0x11ffbf,    /* X11 keysym = 0xffbf:   */
    IM_KEY_F3                           = 0x11ffc0,    /* X11 keysym = 0xffc0:   */
    IM_KEY_F4                           = 0x11ffc1,    /* X11 keysym = 0xffc1:   */
    IM_KEY_F5                           = 0x11ffc2,    /* X11 keysym = 0xffc2:   */
    IM_KEY_F6                           = 0x11ffc3,    /* X11 keysym = 0xffc3:   */
    IM_KEY_F7                           = 0x11ffc4,    /* X11 keysym = 0xffc4:   */
    IM_KEY_F8                           = 0x11ffc5,    /* X11 keysym = 0xffc5:   */
    IM_KEY_F9                           = 0x11ffc6,    /* X11 keysym = 0xffc6:   */
    IM_KEY_F10                          = 0x11ffc7,    /* X11 keysym = 0xffc7:   */
    IM_KEY_F11                          = 0x11ffc8,    /* X11 keysym = 0xffc8:   */
    IM_KEY_F12                          = 0x11ffc9,    /* X11 keysym = 0xffc9:   */
    IM_KEY_F13                          = 0x11ffca,    /* X11 keysym = 0xffca:   */
    IM_KEY_F14                          = 0x11ffcb,    /* X11 keysym = 0xffcb:   */
    IM_KEY_F15                          = 0x11ffcc,    /* X11 keysym = 0xffcc:   */
    IM_KEY_F16                          = 0x11ffcd,    /* X11 keysym = 0xffcd:   */
    IM_KEY_F17                          = 0x11ffce,    /* X11 keysym = 0xffce:   */
    IM_KEY_F18                          = 0x11ffcf,    /* X11 keysym = 0xffcf:   */
    IM_KEY_F19                          = 0x11ffd0,    /* X11 keysym = 0xffd0:   */
    IM_KEY_F20                          = 0x11ffd1,    /* X11 keysym = 0xffd1:   */
    IM_KEY_F21                          = 0x11ffd2,    /* X11 keysym = 0xffd2:   */
    IM_KEY_F22                          = 0x11ffd3,    /* X11 keysym = 0xffd3:   */
    IM_KEY_F23                          = 0x11ffd4,    /* X11 keysym = 0xffd4:   */
    IM_KEY_F24                          = 0x11ffd5,    /* X11 keysym = 0xffd5:   */
    IM_KEY_F25                          = 0x11ffd6,    /* X11 keysym = 0xffd6:   */
    IM_KEY_F26                          = 0x11ffd7,    /* X11 keysym = 0xffd7:   */
    IM_KEY_F27                          = 0x11ffd8,    /* X11 keysym = 0xffd8:   */
    IM_KEY_F28                          = 0x11ffd9,    /* X11 keysym = 0xffd9:   */
    IM_KEY_F29                          = 0x11ffda,    /* X11 keysym = 0xffda:   */
    IM_KEY_F30                          = 0x11ffdb,    /* X11 keysym = 0xffdb:   */
    IM_KEY_F31                          = 0x11ffdc,    /* X11 keysym = 0xffdc:   */
    IM_KEY_F32                          = 0x11ffdd,    /* X11 keysym = 0xffdd:   */
    IM_KEY_F33                          = 0x11ffde,    /* X11 keysym = 0xffde:   */
    IM_KEY_F34                          = 0x11ffdf,    /* X11 keysym = 0xffdf:   */
    IM_KEY_F35                          = 0x11ffe0,    /* X11 keysym = 0xffe0:   */
    IM_KEY_Shift_L                      = 0x11ffe1,    /* X11 keysym = 0xffe1:   */
    IM_KEY_Shift_R                      = 0x11ffe2,    /* X11 keysym = 0xffe2:   */
    IM_KEY_Control_L                    = 0x11ffe3,    /* X11 keysym = 0xffe3:   */
    IM_KEY_Control_R                    = 0x11ffe4,    /* X11 keysym = 0xffe4:   */
    IM_KEY_Caps_Lock                    = 0x11ffe5,    /* X11 keysym = 0xffe5:   */
    IM_KEY_Shift_Lock                   = 0x11ffe6,    /* X11 keysym = 0xffe6:   */
    IM_KEY_Meta_L                       = 0x11ffe7,    /* X11 keysym = 0xffe7:   */
    IM_KEY_Meta_R                       = 0x11ffe8,    /* X11 keysym = 0xffe8:   */
    IM_KEY_Alt_L                        = 0x11ffe9,    /* X11 keysym = 0xffe9:   */
    IM_KEY_Alt_R                        = 0x11ffea,    /* X11 keysym = 0xffea:   */
    IM_KEY_Super_L                      = 0x11ffeb,    /* X11 keysym = 0xffeb:   */
    IM_KEY_Super_R                      = 0x11ffec,    /* X11 keysym = 0xffec:   */
    IM_KEY_Hyper_L                      = 0x11ffed,    /* X11 keysym = 0xffed:   */
    IM_KEY_Hyper_R                      = 0x11ffee,    /* X11 keysym = 0xffee:   */
    IM_KEY_Delete                       = 0x11ffff,    /* X11 keysym = 0xffff:   */

    /* Unicode key codes */
    IM_KEY_BackSpace                    = 0x0008,    /* X11 keysym = 0xff08:   */
    IM_KEY_Tab                          = 0x0009,    /* X11 keysym = 0xff09:   */
    IM_KEY_Linefeed                     = 0x000a,    /* X11 keysym = 0xff0a:   */
    IM_KEY_Return                       = 0x000d,    /* X11 keysym = 0xff0d:   */
    IM_KEY_space                        = 0x0020,    /* X11 keysym = 0x0020:   */
    IM_KEY_exclam                       = 0x0021,    /* X11 keysym = 0x0021: ! */
    IM_KEY_quotedbl                     = 0x0022,    /* X11 keysym = 0x0022: " */
    IM_KEY_numbersign                   = 0x0023,    /* X11 keysym = 0x0023: # */
    IM_KEY_dollar                       = 0x0024,    /* X11 keysym = 0x0024: $ */
    IM_KEY_percent                      = 0x0025,    /* X11 keysym = 0x0025: % */
    IM_KEY_ampersand                    = 0x0026,    /* X11 keysym = 0x0026: & */
    IM_KEY_apostrophe                   = 0x0027,    /* X11 keysym = 0x0027: ' */
    IM_KEY_parenleft                    = 0x0028,    /* X11 keysym = 0x0028: ( */
    IM_KEY_parenright                   = 0x0029,    /* X11 keysym = 0x0029: ) */
    IM_KEY_asterisk                     = 0x002a,    /* X11 keysym = 0x002a: * */
    IM_KEY_plus                         = 0x002b,    /* X11 keysym = 0x002b: + */
    IM_KEY_comma                        = 0x002c,    /* X11 keysym = 0x002c: , */
    IM_KEY_minus                        = 0x002d,    /* X11 keysym = 0x002d: - */
    IM_KEY_period                       = 0x002e,    /* X11 keysym = 0x002e: . */
    IM_KEY_decimalpoint                 = 0x002e,    /* X11 keysym = 0x0abd: . */
    IM_KEY_slash                        = 0x002f,    /* X11 keysym = 0x002f: / */
    IM_KEY_0                            = 0x0030,    /* X11 keysym = 0x0030: 0 */
    IM_KEY_1                            = 0x0031,    /* X11 keysym = 0x0031: 1 */
    IM_KEY_2                            = 0x0032,    /* X11 keysym = 0x0032: 2 */
    IM_KEY_3                            = 0x0033,    /* X11 keysym = 0x0033: 3 */
    IM_KEY_4                            = 0x0034,    /* X11 keysym = 0x0034: 4 */
    IM_KEY_5                            = 0x0035,    /* X11 keysym = 0x0035: 5 */
    IM_KEY_6                            = 0x0036,    /* X11 keysym = 0x0036: 6 */
    IM_KEY_7                            = 0x0037,    /* X11 keysym = 0x0037: 7 */
    IM_KEY_8                            = 0x0038,    /* X11 keysym = 0x0038: 8 */
    IM_KEY_9                            = 0x0039,    /* X11 keysym = 0x0039: 9 */
    IM_KEY_colon                        = 0x003a,    /* X11 keysym = 0x003a: : */
    IM_KEY_semicolon                    = 0x003b,    /* X11 keysym = 0x003b: ; */
    IM_KEY_leftcaret                    = 0x003c,    /* X11 keysym = 0x0ba3: < */
    IM_KEY_less                         = 0x003c,    /* X11 keysym = 0x003c: < */
    IM_KEY_equal                        = 0x003d,    /* X11 keysym = 0x003d: = */
    IM_KEY_rightcaret                   = 0x003e,    /* X11 keysym = 0x0ba6: > */
    IM_KEY_greater                      = 0x003e,    /* X11 keysym = 0x003e: > */
    IM_KEY_question                     = 0x003f,    /* X11 keysym = 0x003f: ? */
    IM_KEY_at                           = 0x0040,    /* X11 keysym = 0x0040: @ */
    IM_KEY_A                            = 0x0041,    /* X11 keysym = 0x0041: A */
    IM_KEY_B                            = 0x0042,    /* X11 keysym = 0x0042: B */
    IM_KEY_C                            = 0x0043,    /* X11 keysym = 0x0043: C */
    IM_KEY_D                            = 0x0044,    /* X11 keysym = 0x0044: D */
    IM_KEY_E                            = 0x0045,    /* X11 keysym = 0x0045: E */
    IM_KEY_F                            = 0x0046,    /* X11 keysym = 0x0046: F */
    IM_KEY_G                            = 0x0047,    /* X11 keysym = 0x0047: G */
    IM_KEY_H                            = 0x0048,    /* X11 keysym = 0x0048: H */
    IM_KEY_I                            = 0x0049,    /* X11 keysym = 0x0049: I */
    IM_KEY_J                            = 0x004a,    /* X11 keysym = 0x004a: J */
    IM_KEY_K                            = 0x004b,    /* X11 keysym = 0x004b: K */
    IM_KEY_L                            = 0x004c,    /* X11 keysym = 0x004c: L */
    IM_KEY_M                            = 0x004d,    /* X11 keysym = 0x004d: M */
    IM_KEY_N                            = 0x004e,    /* X11 keysym = 0x004e: N */
    IM_KEY_O                            = 0x004f,    /* X11 keysym = 0x004f: O */
    IM_KEY_P                            = 0x0050,    /* X11 keysym = 0x0050: P */
    IM_KEY_Q                            = 0x0051,    /* X11 keysym = 0x0051: Q */
    IM_KEY_R                            = 0x0052,    /* X11 keysym = 0x0052: R */
    IM_KEY_S                            = 0x0053,    /* X11 keysym = 0x0053: S */
    IM_KEY_T                            = 0x0054,    /* X11 keysym = 0x0054: T */
    IM_KEY_U                            = 0x0055,    /* X11 keysym = 0x0055: U */
    IM_KEY_V                            = 0x0056,    /* X11 keysym = 0x0056: V */
    IM_KEY_W                            = 0x0057,    /* X11 keysym = 0x0057: W */
    IM_KEY_X                            = 0x0058,    /* X11 keysym = 0x0058: X */
    IM_KEY_Y                            = 0x0059,    /* X11 keysym = 0x0059: Y */
    IM_KEY_Z                            = 0x005a,    /* X11 keysym = 0x005a: Z */
    IM_KEY_bracketleft                  = 0x005b,    /* X11 keysym = 0x005b: [ */
    IM_KEY_backslash                    = 0x005c,    /* X11 keysym = 0x005c: \ */
    IM_KEY_bracketright                 = 0x005d,    /* X11 keysym = 0x005d: ] */
    IM_KEY_asciicircum                  = 0x005e,    /* X11 keysym = 0x005e: ^ */
    IM_KEY_underbar                     = 0x005f,    /* X11 keysym = 0x0bc6: _ */
    IM_KEY_underscore                   = 0x005f,    /* X11 keysym = 0x005f: _ */
    IM_KEY_grave                        = 0x0060,    /* X11 keysym = 0x0060: ` */
    IM_KEY_a                            = 0x0061,    /* X11 keysym = 0x0061: a */
    IM_KEY_b                            = 0x0062,    /* X11 keysym = 0x0062: b */
    IM_KEY_c                            = 0x0063,    /* X11 keysym = 0x0063: c */
    IM_KEY_d                            = 0x0064,    /* X11 keysym = 0x0064: d */
    IM_KEY_e                            = 0x0065,    /* X11 keysym = 0x0065: e */
    IM_KEY_f                            = 0x0066,    /* X11 keysym = 0x0066: f */
    IM_KEY_g                            = 0x0067,    /* X11 keysym = 0x0067: g */
    IM_KEY_h                            = 0x0068,    /* X11 keysym = 0x0068: h */
    IM_KEY_i                            = 0x0069,    /* X11 keysym = 0x0069: i */
    IM_KEY_j                            = 0x006a,    /* X11 keysym = 0x006a: j */
    IM_KEY_k                            = 0x006b,    /* X11 keysym = 0x006b: k */
    IM_KEY_l                            = 0x006c,    /* X11 keysym = 0x006c: l */
    IM_KEY_m                            = 0x006d,    /* X11 keysym = 0x006d: m */
    IM_KEY_n                            = 0x006e,    /* X11 keysym = 0x006e: n */
    IM_KEY_o                            = 0x006f,    /* X11 keysym = 0x006f: o */
    IM_KEY_p                            = 0x0070,    /* X11 keysym = 0x0070: p */
    IM_KEY_q                            = 0x0071,    /* X11 keysym = 0x0071: q */
    IM_KEY_r                            = 0x0072,    /* X11 keysym = 0x0072: r */
    IM_KEY_s                            = 0x0073,    /* X11 keysym = 0x0073: s */
    IM_KEY_t                            = 0x0074,    /* X11 keysym = 0x0074: t */
    IM_KEY_u                            = 0x0075,    /* X11 keysym = 0x0075: u */
    IM_KEY_v                            = 0x0076,    /* X11 keysym = 0x0076: v */
    IM_KEY_w                            = 0x0077,    /* X11 keysym = 0x0077: w */
    IM_KEY_x                            = 0x0078,    /* X11 keysym = 0x0078: x */
    IM_KEY_y                            = 0x0079,    /* X11 keysym = 0x0079: y */
    IM_KEY_z                            = 0x007a,    /* X11 keysym = 0x007a: z */
    IM_KEY_braceleft                    = 0x007b,    /* X11 keysym = 0x007b: { */
    IM_KEY_bar                          = 0x007c,    /* X11 keysym = 0x007c: | */
    IM_KEY_braceright                   = 0x007d,    /* X11 keysym = 0x007d: } */
    IM_KEY_asciitilde                   = 0x007e,    /* X11 keysym = 0x007e: ~ */
    IM_KEY_nobreakspace                 = 0x00a0,    /* X11 keysym = 0x00a0:   */
    IM_KEY_exclamdown                   = 0x00a1,    /* X11 keysym = 0x00a1: ¡ */
    IM_KEY_cent                         = 0x00a2,    /* X11 keysym = 0x00a2: ¢ */
    IM_KEY_sterling                     = 0x00a3,    /* X11 keysym = 0x00a3: £ */
    IM_KEY_currency                     = 0x00a4,    /* X11 keysym = 0x00a4: ¤ */
    IM_KEY_yen                          = 0x00a5,    /* X11 keysym = 0x00a5: ¥ */
    IM_KEY_brokenbar                    = 0x00a6,    /* X11 keysym = 0x00a6: ¦ */
    IM_KEY_section                      = 0x00a7,    /* X11 keysym = 0x00a7: § */
    IM_KEY_diaeresis                    = 0x00a8,    /* X11 keysym = 0x00a8: ¨ */
    IM_KEY_copyright                    = 0x00a9,    /* X11 keysym = 0x00a9: © */
    IM_KEY_ordfeminine                  = 0x00aa,    /* X11 keysym = 0x00aa: ª */
    IM_KEY_guillemotleft                = 0x00ab,    /* X11 keysym = 0x00ab: « */
    IM_KEY_notsign                      = 0x00ac,    /* X11 keysym = 0x00ac: ¬ */
    IM_KEY_hyphen                       = 0x00ad,    /* X11 keysym = 0x00ad: ­ */
    IM_KEY_registered                   = 0x00ae,    /* X11 keysym = 0x00ae: ® */
    IM_KEY_macron                       = 0x00af,    /* X11 keysym = 0x00af: ¯ */
    IM_KEY_overbar                      = 0x00af,    /* X11 keysym = 0x0bc0: ¯ */
    IM_KEY_degree                       = 0x00b0,    /* X11 keysym = 0x00b0: ° */
    IM_KEY_plusminus                    = 0x00b1,    /* X11 keysym = 0x00b1: ± */
    IM_KEY_twosuperior                  = 0x00b2,    /* X11 keysym = 0x00b2: ² */
    IM_KEY_threesuperior                = 0x00b3,    /* X11 keysym = 0x00b3: ³ */
    IM_KEY_acute                        = 0x00b4,    /* X11 keysym = 0x00b4: ´ */
    IM_KEY_mu                           = 0x00b5,    /* X11 keysym = 0x00b5: µ */
    IM_KEY_paragraph                    = 0x00b6,    /* X11 keysym = 0x00b6: ¶ */
    IM_KEY_periodcentered               = 0x00b7,    /* X11 keysym = 0x00b7: · */
    IM_KEY_cedilla                      = 0x00b8,    /* X11 keysym = 0x00b8: ¸ */
    IM_KEY_onesuperior                  = 0x00b9,    /* X11 keysym = 0x00b9: ¹ */
    IM_KEY_masculine                    = 0x00ba,    /* X11 keysym = 0x00ba: º */
    IM_KEY_guillemotright               = 0x00bb,    /* X11 keysym = 0x00bb: » */
    IM_KEY_onequarter                   = 0x00bc,    /* X11 keysym = 0x00bc: ¼ */
    IM_KEY_onehalf                      = 0x00bd,    /* X11 keysym = 0x00bd: ½ */
    IM_KEY_threequarters                = 0x00be,    /* X11 keysym = 0x00be: ¾ */
    IM_KEY_questiondown                 = 0x00bf,    /* X11 keysym = 0x00bf: ¿ */
    IM_KEY_Agrave                       = 0x00c0,    /* X11 keysym = 0x00c0: À */
    IM_KEY_Aacute                       = 0x00c1,    /* X11 keysym = 0x00c1: Á */
    IM_KEY_Acircumflex                  = 0x00c2,    /* X11 keysym = 0x00c2: Â */
    IM_KEY_Atilde                       = 0x00c3,    /* X11 keysym = 0x00c3: Ã */
    IM_KEY_Adiaeresis                   = 0x00c4,    /* X11 keysym = 0x00c4: Ä */
    IM_KEY_Aring                        = 0x00c5,    /* X11 keysym = 0x00c5: Å */
    IM_KEY_AE                           = 0x00c6,    /* X11 keysym = 0x00c6: Æ */
    IM_KEY_Ccedilla                     = 0x00c7,    /* X11 keysym = 0x00c7: Ç */
    IM_KEY_Egrave                       = 0x00c8,    /* X11 keysym = 0x00c8: È */
    IM_KEY_Eacute                       = 0x00c9,    /* X11 keysym = 0x00c9: É */
    IM_KEY_Ecircumflex                  = 0x00ca,    /* X11 keysym = 0x00ca: Ê */
    IM_KEY_Ediaeresis                   = 0x00cb,    /* X11 keysym = 0x00cb: Ë */
    IM_KEY_Igrave                       = 0x00cc,    /* X11 keysym = 0x00cc: Ì */
    IM_KEY_Iacute                       = 0x00cd,    /* X11 keysym = 0x00cd: Í */
    IM_KEY_Icircumflex                  = 0x00ce,    /* X11 keysym = 0x00ce: Î */
    IM_KEY_Idiaeresis                   = 0x00cf,    /* X11 keysym = 0x00cf: Ï */
    IM_KEY_ETH                          = 0x00d0,    /* X11 keysym = 0x00d0: Ð */
    IM_KEY_Ntilde                       = 0x00d1,    /* X11 keysym = 0x00d1: Ñ */
    IM_KEY_Ograve                       = 0x00d2,    /* X11 keysym = 0x00d2: Ò */
    IM_KEY_Oacute                       = 0x00d3,    /* X11 keysym = 0x00d3: Ó */
    IM_KEY_Ocircumflex                  = 0x00d4,    /* X11 keysym = 0x00d4: Ô */
    IM_KEY_Otilde                       = 0x00d5,    /* X11 keysym = 0x00d5: Õ */
    IM_KEY_Odiaeresis                   = 0x00d6,    /* X11 keysym = 0x00d6: Ö */
    IM_KEY_multiply                     = 0x00d7,    /* X11 keysym = 0x00d7: × */
    IM_KEY_Oslash                       = 0x00d8,    /* X11 keysym = 0x00d8: Ø */
    IM_KEY_Ugrave                       = 0x00d9,    /* X11 keysym = 0x00d9: Ù */
    IM_KEY_Uacute                       = 0x00da,    /* X11 keysym = 0x00da: Ú */
    IM_KEY_Ucircumflex                  = 0x00db,    /* X11 keysym = 0x00db: Û */
    IM_KEY_Udiaeresis                   = 0x00dc,    /* X11 keysym = 0x00dc: Ü */
    IM_KEY_Yacute                       = 0x00dd,    /* X11 keysym = 0x00dd: Ý */
    IM_KEY_THORN                        = 0x00de,    /* X11 keysym = 0x00de: Þ */
    IM_KEY_ssharp                       = 0x00df,    /* X11 keysym = 0x00df: ß */
    IM_KEY_agrave                       = 0x00e0,    /* X11 keysym = 0x00e0: à */
    IM_KEY_aacute                       = 0x00e1,    /* X11 keysym = 0x00e1: á */
    IM_KEY_acircumflex                  = 0x00e2,    /* X11 keysym = 0x00e2: â */
    IM_KEY_atilde                       = 0x00e3,    /* X11 keysym = 0x00e3: ã */
    IM_KEY_adiaeresis                   = 0x00e4,    /* X11 keysym = 0x00e4: ä */
    IM_KEY_aring                        = 0x00e5,    /* X11 keysym = 0x00e5: å */
    IM_KEY_ae                           = 0x00e6,    /* X11 keysym = 0x00e6: æ */
    IM_KEY_ccedilla                     = 0x00e7,    /* X11 keysym = 0x00e7: ç */
    IM_KEY_egrave                       = 0x00e8,    /* X11 keysym = 0x00e8: è */
    IM_KEY_eacute                       = 0x00e9,    /* X11 keysym = 0x00e9: é */
    IM_KEY_ecircumflex                  = 0x00ea,    /* X11 keysym = 0x00ea: ê */
    IM_KEY_ediaeresis                   = 0x00eb,    /* X11 keysym = 0x00eb: ë */
    IM_KEY_igrave                       = 0x00ec,    /* X11 keysym = 0x00ec: ì */
    IM_KEY_iacute                       = 0x00ed,    /* X11 keysym = 0x00ed: í */
    IM_KEY_icircumflex                  = 0x00ee,    /* X11 keysym = 0x00ee: î */
    IM_KEY_idiaeresis                   = 0x00ef,    /* X11 keysym = 0x00ef: ï */
    IM_KEY_eth                          = 0x00f0,    /* X11 keysym = 0x00f0: ð */
    IM_KEY_ntilde                       = 0x00f1,    /* X11 keysym = 0x00f1: ñ */
    IM_KEY_ograve                       = 0x00f2,    /* X11 keysym = 0x00f2: ò */
    IM_KEY_oacute                       = 0x00f3,    /* X11 keysym = 0x00f3: ó */
    IM_KEY_ocircumflex                  = 0x00f4,    /* X11 keysym = 0x00f4: ô */
    IM_KEY_otilde                       = 0x00f5,    /* X11 keysym = 0x00f5: õ */
    IM_KEY_odiaeresis                   = 0x00f6,    /* X11 keysym = 0x00f6: ö */
    IM_KEY_division                     = 0x00f7,    /* X11 keysym = 0x00f7: ÷ */
    IM_KEY_oslash                       = 0x00f8,    /* X11 keysym = 0x00f8: ø */
    IM_KEY_ugrave                       = 0x00f9,    /* X11 keysym = 0x00f9: ù */
    IM_KEY_uacute                       = 0x00fa,    /* X11 keysym = 0x00fa: ú */
    IM_KEY_ucircumflex                  = 0x00fb,    /* X11 keysym = 0x00fb: û */
    IM_KEY_udiaeresis                   = 0x00fc,    /* X11 keysym = 0x00fc: ü */
    IM_KEY_yacute                       = 0x00fd,    /* X11 keysym = 0x00fd: ý */
    IM_KEY_thorn                        = 0x00fe,    /* X11 keysym = 0x00fe: þ */
    IM_KEY_ydiaeresis                   = 0x00ff,    /* X11 keysym = 0x00ff: ÿ */
    IM_KEY_Amacron                      = 0x0100,    /* X11 keysym = 0x03c0: Ā */
    IM_KEY_amacron                      = 0x0101,    /* X11 keysym = 0x03e0: ā */
    IM_KEY_Abreve                       = 0x0102,    /* X11 keysym = 0x01c3: Ă */
    IM_KEY_abreve                       = 0x0103,    /* X11 keysym = 0x01e3: ă */
    IM_KEY_Aogonek                      = 0x0104,    /* X11 keysym = 0x01a1: Ą */
    IM_KEY_aogonek                      = 0x0105,    /* X11 keysym = 0x01b1: ą */
    IM_KEY_Cacute                       = 0x0106,    /* X11 keysym = 0x01c6: Ć */
    IM_KEY_cacute                       = 0x0107,    /* X11 keysym = 0x01e6: ć */
    IM_KEY_Ccircumflex                  = 0x0108,    /* X11 keysym = 0x02c6: Ĉ */
    IM_KEY_ccircumflex                  = 0x0109,    /* X11 keysym = 0x02e6: ĉ */
    IM_KEY_Cabovedot                    = 0x010a,    /* X11 keysym = 0x02c5: Ċ */
    IM_KEY_cabovedot                    = 0x010b,    /* X11 keysym = 0x02e5: ċ */
    IM_KEY_Ccaron                       = 0x010c,    /* X11 keysym = 0x01c8: Č */
    IM_KEY_ccaron                       = 0x010d,    /* X11 keysym = 0x01e8: č */
    IM_KEY_Dcaron                       = 0x010e,    /* X11 keysym = 0x01cf: Ď */
    IM_KEY_dcaron                       = 0x010f,    /* X11 keysym = 0x01ef: ď */
    IM_KEY_Dstroke                      = 0x0110,    /* X11 keysym = 0x01d0: Đ */
    IM_KEY_dstroke                      = 0x0111,    /* X11 keysym = 0x01f0: đ */
    IM_KEY_Emacron                      = 0x0112,    /* X11 keysym = 0x03aa: Ē */
    IM_KEY_emacron                      = 0x0113,    /* X11 keysym = 0x03ba: ē */
    IM_KEY_Eabovedot                    = 0x0116,    /* X11 keysym = 0x03cc: Ė */
    IM_KEY_eabovedot                    = 0x0117,    /* X11 keysym = 0x03ec: ė */
    IM_KEY_Eogonek                      = 0x0118,    /* X11 keysym = 0x01ca: Ę */
    IM_KEY_eogonek                      = 0x0119,    /* X11 keysym = 0x01ea: ę */
    IM_KEY_Ecaron                       = 0x011a,    /* X11 keysym = 0x01cc: Ě */
    IM_KEY_ecaron                       = 0x011b,    /* X11 keysym = 0x01ec: ě */
    IM_KEY_Gcircumflex                  = 0x011c,    /* X11 keysym = 0x02d8: Ĝ */
    IM_KEY_gcircumflex                  = 0x011d,    /* X11 keysym = 0x02f8: ĝ */
    IM_KEY_Gbreve                       = 0x011e,    /* X11 keysym = 0x02ab: Ğ */
    IM_KEY_gbreve                       = 0x011f,    /* X11 keysym = 0x02bb: ğ */
    IM_KEY_Gabovedot                    = 0x0120,    /* X11 keysym = 0x02d5: Ġ */
    IM_KEY_gabovedot                    = 0x0121,    /* X11 keysym = 0x02f5: ġ */
    IM_KEY_Gcedilla                     = 0x0122,    /* X11 keysym = 0x03ab: Ģ */
    IM_KEY_gcedilla                     = 0x0123,    /* X11 keysym = 0x03bb: ģ */
    IM_KEY_Hcircumflex                  = 0x0124,    /* X11 keysym = 0x02a6: Ĥ */
    IM_KEY_hcircumflex                  = 0x0125,    /* X11 keysym = 0x02b6: ĥ */
    IM_KEY_Hstroke                      = 0x0126,    /* X11 keysym = 0x02a1: Ħ */
    IM_KEY_hstroke                      = 0x0127,    /* X11 keysym = 0x02b1: ħ */
    IM_KEY_Itilde                       = 0x0128,    /* X11 keysym = 0x03a5: Ĩ */
    IM_KEY_itilde                       = 0x0129,    /* X11 keysym = 0x03b5: ĩ */
    IM_KEY_Imacron                      = 0x012a,    /* X11 keysym = 0x03cf: Ī */
    IM_KEY_imacron                      = 0x012b,    /* X11 keysym = 0x03ef: ī */
    IM_KEY_Ibreve                       = 0x012c,    /* X11 keysym = 0x100012c: Ĭ */
    IM_KEY_ibreve                       = 0x012d,    /* X11 keysym = 0x100012d: ĭ */
    IM_KEY_Iogonek                      = 0x012e,    /* X11 keysym = 0x03c7: Į */
    IM_KEY_iogonek                      = 0x012f,    /* X11 keysym = 0x03e7: į */
    IM_KEY_Iabovedot                    = 0x0130,    /* X11 keysym = 0x02a9: İ */
    IM_KEY_idotless                     = 0x0131,    /* X11 keysym = 0x02b9: ı */
    IM_KEY_Jcircumflex                  = 0x0134,    /* X11 keysym = 0x02ac: Ĵ */
    IM_KEY_jcircumflex                  = 0x0135,    /* X11 keysym = 0x02bc: ĵ */
    IM_KEY_Kcedilla                     = 0x0136,    /* X11 keysym = 0x03d3: Ķ */
    IM_KEY_kcedilla                     = 0x0137,    /* X11 keysym = 0x03f3: ķ */
    IM_KEY_kra                          = 0x0138,    /* X11 keysym = 0x03a2: ĸ */
    IM_KEY_Lacute                       = 0x0139,    /* X11 keysym = 0x01c5: Ĺ */
    IM_KEY_lacute                       = 0x013a,    /* X11 keysym = 0x01e5: ĺ */
    IM_KEY_Lcedilla                     = 0x013b,    /* X11 keysym = 0x03a6: Ļ */
    IM_KEY_lcedilla                     = 0x013c,    /* X11 keysym = 0x03b6: ļ */
    IM_KEY_Lcaron                       = 0x013d,    /* X11 keysym = 0x01a5: Ľ */
    IM_KEY_lcaron                       = 0x013e,    /* X11 keysym = 0x01b5: ľ */
    IM_KEY_Lstroke                      = 0x0141,    /* X11 keysym = 0x01a3: Ł */
    IM_KEY_lstroke                      = 0x0142,    /* X11 keysym = 0x01b3: ł */
    IM_KEY_Nacute                       = 0x0143,    /* X11 keysym = 0x01d1: Ń */
    IM_KEY_nacute                       = 0x0144,    /* X11 keysym = 0x01f1: ń */
    IM_KEY_Ncedilla                     = 0x0145,    /* X11 keysym = 0x03d1: Ņ */
    IM_KEY_ncedilla                     = 0x0146,    /* X11 keysym = 0x03f1: ņ */
    IM_KEY_Ncaron                       = 0x0147,    /* X11 keysym = 0x01d2: Ň */
    IM_KEY_ncaron                       = 0x0148,    /* X11 keysym = 0x01f2: ň */
    IM_KEY_ENG                          = 0x014a,    /* X11 keysym = 0x03bd: Ŋ */
    IM_KEY_eng                          = 0x014b,    /* X11 keysym = 0x03bf: ŋ */
    IM_KEY_Omacron                      = 0x014c,    /* X11 keysym = 0x03d2: Ō */
    IM_KEY_omacron                      = 0x014d,    /* X11 keysym = 0x03f2: ō */
    IM_KEY_Odoubleacute                 = 0x0150,    /* X11 keysym = 0x01d5: Ő */
    IM_KEY_odoubleacute                 = 0x0151,    /* X11 keysym = 0x01f5: ő */
    IM_KEY_OE                           = 0x0152,    /* X11 keysym = 0x13bc: Œ */
    IM_KEY_oe                           = 0x0153,    /* X11 keysym = 0x13bd: œ */
    IM_KEY_Racute                       = 0x0154,    /* X11 keysym = 0x01c0: Ŕ */
    IM_KEY_racute                       = 0x0155,    /* X11 keysym = 0x01e0: ŕ */
    IM_KEY_Rcedilla                     = 0x0156,    /* X11 keysym = 0x03a3: Ŗ */
    IM_KEY_rcedilla                     = 0x0157,    /* X11 keysym = 0x03b3: ŗ */
    IM_KEY_Rcaron                       = 0x0158,    /* X11 keysym = 0x01d8: Ř */
    IM_KEY_rcaron                       = 0x0159,    /* X11 keysym = 0x01f8: ř */
    IM_KEY_Sacute                       = 0x015a,    /* X11 keysym = 0x01a6: Ś */
    IM_KEY_sacute                       = 0x015b,    /* X11 keysym = 0x01b6: ś */
    IM_KEY_Scircumflex                  = 0x015c,    /* X11 keysym = 0x02de: Ŝ */
    IM_KEY_scircumflex                  = 0x015d,    /* X11 keysym = 0x02fe: ŝ */
    IM_KEY_Scedilla                     = 0x015e,    /* X11 keysym = 0x01aa: Ş */
    IM_KEY_scedilla                     = 0x015f,    /* X11 keysym = 0x01ba: ş */
    IM_KEY_Scaron                       = 0x0160,    /* X11 keysym = 0x01a9: Š */
    IM_KEY_scaron                       = 0x0161,    /* X11 keysym = 0x01b9: š */
    IM_KEY_Tcedilla                     = 0x0162,    /* X11 keysym = 0x01de: Ţ */
    IM_KEY_tcedilla                     = 0x0163,    /* X11 keysym = 0x01fe: ţ */
    IM_KEY_Tcaron                       = 0x0164,    /* X11 keysym = 0x01ab: Ť */
    IM_KEY_tcaron                       = 0x0165,    /* X11 keysym = 0x01bb: ť */
    IM_KEY_Tslash                       = 0x0166,    /* X11 keysym = 0x03ac: Ŧ */
    IM_KEY_tslash                       = 0x0167,    /* X11 keysym = 0x03bc: ŧ */
    IM_KEY_Utilde                       = 0x0168,    /* X11 keysym = 0x03dd: Ũ */
    IM_KEY_utilde                       = 0x0169,    /* X11 keysym = 0x03fd: ũ */
    IM_KEY_Umacron                      = 0x016a,    /* X11 keysym = 0x03de: Ū */
    IM_KEY_umacron                      = 0x016b,    /* X11 keysym = 0x03fe: ū */
    IM_KEY_Ubreve                       = 0x016c,    /* X11 keysym = 0x02dd: Ŭ */
    IM_KEY_ubreve                       = 0x016d,    /* X11 keysym = 0x02fd: ŭ */
    IM_KEY_Uring                        = 0x016e,    /* X11 keysym = 0x01d9: Ů */
    IM_KEY_uring                        = 0x016f,    /* X11 keysym = 0x01f9: ů */
    IM_KEY_Udoubleacute                 = 0x0170,    /* X11 keysym = 0x01db: Ű */
    IM_KEY_udoubleacute                 = 0x0171,    /* X11 keysym = 0x01fb: ű */
    IM_KEY_Uogonek                      = 0x0172,    /* X11 keysym = 0x03d9: Ų */
    IM_KEY_uogonek                      = 0x0173,    /* X11 keysym = 0x03f9: ų */
    IM_KEY_Wcircumflex                  = 0x0174,    /* X11 keysym = 0x1000174: Ŵ */
    IM_KEY_wcircumflex                  = 0x0175,    /* X11 keysym = 0x1000175: ŵ */
    IM_KEY_Ycircumflex                  = 0x0176,    /* X11 keysym = 0x1000176: Ŷ */
    IM_KEY_ycircumflex                  = 0x0177,    /* X11 keysym = 0x1000177: ŷ */
    IM_KEY_Ydiaeresis                   = 0x0178,    /* X11 keysym = 0x13be: Ÿ */
    IM_KEY_Zacute                       = 0x0179,    /* X11 keysym = 0x01ac: Ź */
    IM_KEY_zacute                       = 0x017a,    /* X11 keysym = 0x01bc: ź */
    IM_KEY_Zabovedot                    = 0x017b,    /* X11 keysym = 0x01af: Ż */
    IM_KEY_zabovedot                    = 0x017c,    /* X11 keysym = 0x01bf: ż */
    IM_KEY_Zcaron                       = 0x017d,    /* X11 keysym = 0x01ae: Ž */
    IM_KEY_zcaron                       = 0x017e,    /* X11 keysym = 0x01be: ž */
    IM_KEY_SCHWA                        = 0x018f,    /* X11 keysym = 0x100018f: Ə */
    IM_KEY_function                     = 0x0192,    /* X11 keysym = 0x08f6: ƒ */
    IM_KEY_Obarred                      = 0x019f,    /* X11 keysym = 0x100019f: Ɵ */
    IM_KEY_Ohorn                        = 0x01a0,    /* X11 keysym = 0x10001a0: Ơ */
    IM_KEY_ohorn                        = 0x01a1,    /* X11 keysym = 0x10001a1: ơ */
    IM_KEY_Uhorn                        = 0x01af,    /* X11 keysym = 0x10001af: Ư */
    IM_KEY_uhorn                        = 0x01b0,    /* X11 keysym = 0x10001b0: ư */
    IM_KEY_Zstroke                      = 0x01b5,    /* X11 keysym = 0x10001b5: Ƶ */
    IM_KEY_zstroke                      = 0x01b6,    /* X11 keysym = 0x10001b6: ƶ */
    IM_KEY_Ocaron                       = 0x01d2,    /* X11 keysym = 0x10001d1: ǒ */
    IM_KEY_ocaron                       = 0x01d2,    /* X11 keysym = 0x10001d2: ǒ */
    IM_KEY_Gcaron                       = 0x01e6,    /* X11 keysym = 0x10001e6: Ǧ */
    IM_KEY_gcaron                       = 0x01e7,    /* X11 keysym = 0x10001e7: ǧ */
    IM_KEY_schwa                        = 0x0259,    /* X11 keysym = 0x1000259: ə */
    IM_KEY_obarred                      = 0x0275,    /* X11 keysym = 0x1000275: ɵ */
    IM_KEY_caron                        = 0x02c7,    /* X11 keysym = 0x01b7: ˇ */
    IM_KEY_breve                        = 0x02d8,    /* X11 keysym = 0x01a2: ˘ */
    IM_KEY_abovedot                     = 0x02d9,    /* X11 keysym = 0x01ff: ˙ */
    IM_KEY_ogonek                       = 0x02db,    /* X11 keysym = 0x01b2: ˛ */
    IM_KEY_doubleacute                  = 0x02dd,    /* X11 keysym = 0x01bd: ˝ */
    IM_KEY_Greek_accentdieresis         = 0x0385,    /* X11 keysym = 0x07ae: ΅ */
    IM_KEY_Greek_ALPHAaccent            = 0x0386,    /* X11 keysym = 0x07a1: Ά */
    IM_KEY_Greek_EPSILONaccent          = 0x0388,    /* X11 keysym = 0x07a2: Έ */
    IM_KEY_Greek_ETAaccent              = 0x0389,    /* X11 keysym = 0x07a3: Ή */
    IM_KEY_Greek_IOTAaccent             = 0x038a,    /* X11 keysym = 0x07a4: Ί */
    IM_KEY_Greek_OMICRONaccent          = 0x038c,    /* X11 keysym = 0x07a7: Ό */
    IM_KEY_Greek_UPSILONaccent          = 0x038e,    /* X11 keysym = 0x07a8: Ύ */
    IM_KEY_Greek_OMEGAaccent            = 0x038f,    /* X11 keysym = 0x07ab: Ώ */
    IM_KEY_Greek_iotaaccentdieresis     = 0x0390,    /* X11 keysym = 0x07b6: ΐ */
    IM_KEY_Greek_ALPHA                  = 0x0391,    /* X11 keysym = 0x07c1: Α */
    IM_KEY_Greek_BETA                   = 0x0392,    /* X11 keysym = 0x07c2: Β */
    IM_KEY_Greek_GAMMA                  = 0x0393,    /* X11 keysym = 0x07c3: Γ */
    IM_KEY_Greek_DELTA                  = 0x0394,    /* X11 keysym = 0x07c4: Δ */
    IM_KEY_Greek_EPSILON                = 0x0395,    /* X11 keysym = 0x07c5: Ε */
    IM_KEY_Greek_ZETA                   = 0x0396,    /* X11 keysym = 0x07c6: Ζ */
    IM_KEY_Greek_ETA                    = 0x0397,    /* X11 keysym = 0x07c7: Η */
    IM_KEY_Greek_THETA                  = 0x0398,    /* X11 keysym = 0x07c8: Θ */
    IM_KEY_Greek_IOTA                   = 0x0399,    /* X11 keysym = 0x07c9: Ι */
    IM_KEY_Greek_KAPPA                  = 0x039a,    /* X11 keysym = 0x07ca: Κ */
    IM_KEY_Greek_LAMDA                  = 0x039b,    /* X11 keysym = 0x07cb: Λ */
    IM_KEY_Greek_MU                     = 0x039c,    /* X11 keysym = 0x07cc: Μ */
    IM_KEY_Greek_NU                     = 0x039d,    /* X11 keysym = 0x07cd: Ν */
    IM_KEY_Greek_XI                     = 0x039e,    /* X11 keysym = 0x07ce: Ξ */
    IM_KEY_Greek_OMICRON                = 0x039f,    /* X11 keysym = 0x07cf: Ο */
    IM_KEY_Greek_PI                     = 0x03a0,    /* X11 keysym = 0x07d0: Π */
    IM_KEY_Greek_RHO                    = 0x03a1,    /* X11 keysym = 0x07d1: Ρ */
    IM_KEY_Greek_SIGMA                  = 0x03a3,    /* X11 keysym = 0x07d2: Σ */
    IM_KEY_Greek_TAU                    = 0x03a4,    /* X11 keysym = 0x07d4: Τ */
    IM_KEY_Greek_UPSILON                = 0x03a5,    /* X11 keysym = 0x07d5: Υ */
    IM_KEY_Greek_PHI                    = 0x03a6,    /* X11 keysym = 0x07d6: Φ */
    IM_KEY_Greek_CHI                    = 0x03a7,    /* X11 keysym = 0x07d7: Χ */
    IM_KEY_Greek_PSI                    = 0x03a8,    /* X11 keysym = 0x07d8: Ψ */
    IM_KEY_Greek_OMEGA                  = 0x03a9,    /* X11 keysym = 0x07d9: Ω */
    IM_KEY_Greek_IOTAdieresis           = 0x03aa,    /* X11 keysym = 0x07a5: Ϊ */
    IM_KEY_Greek_UPSILONdieresis        = 0x03ab,    /* X11 keysym = 0x07a9: Ϋ */
    IM_KEY_Greek_alphaaccent            = 0x03ac,    /* X11 keysym = 0x07b1: ά */
    IM_KEY_Greek_epsilonaccent          = 0x03ad,    /* X11 keysym = 0x07b2: έ */
    IM_KEY_Greek_etaaccent              = 0x03ae,    /* X11 keysym = 0x07b3: ή */
    IM_KEY_Greek_iotaaccent             = 0x03af,    /* X11 keysym = 0x07b4: ί */
    IM_KEY_Greek_upsilonaccentdieresis  = 0x03b0,    /* X11 keysym = 0x07ba: ΰ */
    IM_KEY_Greek_alpha                  = 0x03b1,    /* X11 keysym = 0x07e1: α */
    IM_KEY_Greek_beta                   = 0x03b2,    /* X11 keysym = 0x07e2: β */
    IM_KEY_Greek_gamma                  = 0x03b3,    /* X11 keysym = 0x07e3: γ */
    IM_KEY_Greek_delta                  = 0x03b4,    /* X11 keysym = 0x07e4: δ */
    IM_KEY_Greek_epsilon                = 0x03b5,    /* X11 keysym = 0x07e5: ε */
    IM_KEY_Greek_zeta                   = 0x03b6,    /* X11 keysym = 0x07e6: ζ */
    IM_KEY_Greek_eta                    = 0x03b7,    /* X11 keysym = 0x07e7: η */
    IM_KEY_Greek_theta                  = 0x03b8,    /* X11 keysym = 0x07e8: θ */
    IM_KEY_Greek_iota                   = 0x03b9,    /* X11 keysym = 0x07e9: ι */
    IM_KEY_Greek_kappa                  = 0x03ba,    /* X11 keysym = 0x07ea: κ */
    IM_KEY_Greek_lamda                  = 0x03bb,    /* X11 keysym = 0x07eb: λ */
    IM_KEY_Greek_mu                     = 0x03bc,    /* X11 keysym = 0x07ec: μ */
    IM_KEY_Greek_nu                     = 0x03bd,    /* X11 keysym = 0x07ed: ν */
    IM_KEY_Greek_xi                     = 0x03be,    /* X11 keysym = 0x07ee: ξ */
    IM_KEY_Greek_omicron                = 0x03bf,    /* X11 keysym = 0x07ef: ο */
    IM_KEY_Greek_pi                     = 0x03c0,    /* X11 keysym = 0x07f0: π */
    IM_KEY_Greek_rho                    = 0x03c1,    /* X11 keysym = 0x07f1: ρ */
    IM_KEY_Greek_finalsmallsigma        = 0x03c2,    /* X11 keysym = 0x07f3: ς */
    IM_KEY_Greek_sigma                  = 0x03c3,    /* X11 keysym = 0x07f2: σ */
    IM_KEY_Greek_tau                    = 0x03c4,    /* X11 keysym = 0x07f4: τ */
    IM_KEY_Greek_upsilon                = 0x03c5,    /* X11 keysym = 0x07f5: υ */
    IM_KEY_Greek_phi                    = 0x03c6,    /* X11 keysym = 0x07f6: φ */
    IM_KEY_Greek_chi                    = 0x03c7,    /* X11 keysym = 0x07f7: χ */
    IM_KEY_Greek_psi                    = 0x03c8,    /* X11 keysym = 0x07f8: ψ */
    IM_KEY_Greek_omega                  = 0x03c9,    /* X11 keysym = 0x07f9: ω */
    IM_KEY_Greek_iotadieresis           = 0x03ca,    /* X11 keysym = 0x07b5: ϊ */
    IM_KEY_Greek_upsilondieresis        = 0x03cb,    /* X11 keysym = 0x07b9: ϋ */
    IM_KEY_Greek_omicronaccent          = 0x03cc,    /* X11 keysym = 0x07b7: ό */
    IM_KEY_Greek_upsilonaccent          = 0x03cd,    /* X11 keysym = 0x07b8: ύ */
    IM_KEY_Greek_omegaaccent            = 0x03ce,    /* X11 keysym = 0x07bb: ώ */
    IM_KEY_Cyrillic_IO                  = 0x0401,    /* X11 keysym = 0x06b3: Ё */
    IM_KEY_Serbian_DJE                  = 0x0402,    /* X11 keysym = 0x06b1: Ђ */
    IM_KEY_Macedonia_GJE                = 0x0403,    /* X11 keysym = 0x06b2: Ѓ */
    IM_KEY_Ukrainian_IE                 = 0x0404,    /* X11 keysym = 0x06b4: Є */
    IM_KEY_Macedonia_DSE                = 0x0405,    /* X11 keysym = 0x06b5: Ѕ */
    IM_KEY_Ukrainian_I                  = 0x0406,    /* X11 keysym = 0x06b6: І */
    IM_KEY_Ukrainian_YI                 = 0x0407,    /* X11 keysym = 0x06b7: Ї */
    IM_KEY_Cyrillic_JE                  = 0x0408,    /* X11 keysym = 0x06b8: Ј */
    IM_KEY_Cyrillic_LJE                 = 0x0409,    /* X11 keysym = 0x06b9: Љ */
    IM_KEY_Cyrillic_NJE                 = 0x040a,    /* X11 keysym = 0x06ba: Њ */
    IM_KEY_Serbian_TSHE                 = 0x040b,    /* X11 keysym = 0x06bb: Ћ */
    IM_KEY_Macedonia_KJE                = 0x040c,    /* X11 keysym = 0x06bc: Ќ */
    IM_KEY_Byelorussian_SHORTU          = 0x040e,    /* X11 keysym = 0x06be: Ў */
    IM_KEY_Cyrillic_DZHE                = 0x040f,    /* X11 keysym = 0x06bf: Џ */
    IM_KEY_Cyrillic_A                   = 0x0410,    /* X11 keysym = 0x06e1: А */
    IM_KEY_Cyrillic_BE                  = 0x0411,    /* X11 keysym = 0x06e2: Б */
    IM_KEY_Cyrillic_VE                  = 0x0412,    /* X11 keysym = 0x06f7: В */
    IM_KEY_Cyrillic_GHE                 = 0x0413,    /* X11 keysym = 0x06e7: Г */
    IM_KEY_Cyrillic_DE                  = 0x0414,    /* X11 keysym = 0x06e4: Д */
    IM_KEY_Cyrillic_IE                  = 0x0415,    /* X11 keysym = 0x06e5: Е */
    IM_KEY_Cyrillic_ZHE                 = 0x0416,    /* X11 keysym = 0x06f6: Ж */
    IM_KEY_Cyrillic_ZE                  = 0x0417,    /* X11 keysym = 0x06fa: З */
    IM_KEY_Cyrillic_I                   = 0x0418,    /* X11 keysym = 0x06e9: И */
    IM_KEY_Cyrillic_SHORTI              = 0x0419,    /* X11 keysym = 0x06ea: Й */
    IM_KEY_Cyrillic_KA                  = 0x041a,    /* X11 keysym = 0x06eb: К */
    IM_KEY_Cyrillic_EL                  = 0x041b,    /* X11 keysym = 0x06ec: Л */
    IM_KEY_Cyrillic_EM                  = 0x041c,    /* X11 keysym = 0x06ed: М */
    IM_KEY_Cyrillic_EN                  = 0x041d,    /* X11 keysym = 0x06ee: Н */
    IM_KEY_Cyrillic_O                   = 0x041e,    /* X11 keysym = 0x06ef: О */
    IM_KEY_Cyrillic_PE                  = 0x041f,    /* X11 keysym = 0x06f0: П */
    IM_KEY_Cyrillic_ER                  = 0x0420,    /* X11 keysym = 0x06f2: Р */
    IM_KEY_Cyrillic_ES                  = 0x0421,    /* X11 keysym = 0x06f3: С */
    IM_KEY_Cyrillic_TE                  = 0x0422,    /* X11 keysym = 0x06f4: Т */
    IM_KEY_Cyrillic_U                   = 0x0423,    /* X11 keysym = 0x06f5: У */
    IM_KEY_Cyrillic_EF                  = 0x0424,    /* X11 keysym = 0x06e6: Ф */
    IM_KEY_Cyrillic_HA                  = 0x0425,    /* X11 keysym = 0x06e8: Х */
    IM_KEY_Cyrillic_TSE                 = 0x0426,    /* X11 keysym = 0x06e3: Ц */
    IM_KEY_Cyrillic_CHE                 = 0x0427,    /* X11 keysym = 0x06fe: Ч */
    IM_KEY_Cyrillic_SHA                 = 0x0428,    /* X11 keysym = 0x06fb: Ш */
    IM_KEY_Cyrillic_SHCHA               = 0x0429,    /* X11 keysym = 0x06fd: Щ */
    IM_KEY_Cyrillic_HARDSIGN            = 0x042a,    /* X11 keysym = 0x06ff: Ъ */
    IM_KEY_Cyrillic_YERU                = 0x042b,    /* X11 keysym = 0x06f9: Ы */
    IM_KEY_Cyrillic_SOFTSIGN            = 0x042c,    /* X11 keysym = 0x06f8: Ь */
    IM_KEY_Cyrillic_E                   = 0x042d,    /* X11 keysym = 0x06fc: Э */
    IM_KEY_Cyrillic_YU                  = 0x042e,    /* X11 keysym = 0x06e0: Ю */
    IM_KEY_Cyrillic_YA                  = 0x042f,    /* X11 keysym = 0x06f1: Я */
    IM_KEY_Cyrillic_a                   = 0x0430,    /* X11 keysym = 0x06c1: а */
    IM_KEY_Cyrillic_be                  = 0x0431,    /* X11 keysym = 0x06c2: б */
    IM_KEY_Cyrillic_ve                  = 0x0432,    /* X11 keysym = 0x06d7: в */
    IM_KEY_Cyrillic_ghe                 = 0x0433,    /* X11 keysym = 0x06c7: г */
    IM_KEY_Cyrillic_de                  = 0x0434,    /* X11 keysym = 0x06c4: д */
    IM_KEY_Cyrillic_ie                  = 0x0435,    /* X11 keysym = 0x06c5: е */
    IM_KEY_Cyrillic_zhe                 = 0x0436,    /* X11 keysym = 0x06d6: ж */
    IM_KEY_Cyrillic_ze                  = 0x0437,    /* X11 keysym = 0x06da: з */
    IM_KEY_Cyrillic_i                   = 0x0438,    /* X11 keysym = 0x06c9: и */
    IM_KEY_Cyrillic_shorti              = 0x0439,    /* X11 keysym = 0x06ca: й */
    IM_KEY_Cyrillic_ka                  = 0x043a,    /* X11 keysym = 0x06cb: к */
    IM_KEY_Cyrillic_el                  = 0x043b,    /* X11 keysym = 0x06cc: л */
    IM_KEY_Cyrillic_em                  = 0x043c,    /* X11 keysym = 0x06cd: м */
    IM_KEY_Cyrillic_en                  = 0x043d,    /* X11 keysym = 0x06ce: н */
    IM_KEY_Cyrillic_o                   = 0x043e,    /* X11 keysym = 0x06cf: о */
    IM_KEY_Cyrillic_pe                  = 0x043f,    /* X11 keysym = 0x06d0: п */
    IM_KEY_Cyrillic_er                  = 0x0440,    /* X11 keysym = 0x06d2: р */
    IM_KEY_Cyrillic_es                  = 0x0441,    /* X11 keysym = 0x06d3: с */
    IM_KEY_Cyrillic_te                  = 0x0442,    /* X11 keysym = 0x06d4: т */
    IM_KEY_Cyrillic_u                   = 0x0443,    /* X11 keysym = 0x06d5: у */
    IM_KEY_Cyrillic_ef                  = 0x0444,    /* X11 keysym = 0x06c6: ф */
    IM_KEY_Cyrillic_ha                  = 0x0445,    /* X11 keysym = 0x06c8: х */
    IM_KEY_Cyrillic_tse                 = 0x0446,    /* X11 keysym = 0x06c3: ц */
    IM_KEY_Cyrillic_che                 = 0x0447,    /* X11 keysym = 0x06de: ч */
    IM_KEY_Cyrillic_sha                 = 0x0448,    /* X11 keysym = 0x06db: ш */
    IM_KEY_Cyrillic_shcha               = 0x0449,    /* X11 keysym = 0x06dd: щ */
    IM_KEY_Cyrillic_hardsign            = 0x044a,    /* X11 keysym = 0x06df: ъ */
    IM_KEY_Cyrillic_yeru                = 0x044b,    /* X11 keysym = 0x06d9: ы */
    IM_KEY_Cyrillic_softsign            = 0x044c,    /* X11 keysym = 0x06d8: ь */
    IM_KEY_Cyrillic_e                   = 0x044d,    /* X11 keysym = 0x06dc: э */
    IM_KEY_Cyrillic_yu                  = 0x044e,    /* X11 keysym = 0x06c0: ю */
    IM_KEY_Cyrillic_ya                  = 0x044f,    /* X11 keysym = 0x06d1: я */
    IM_KEY_Cyrillic_io                  = 0x0451,    /* X11 keysym = 0x06a3: ё */
    IM_KEY_Serbian_dje                  = 0x0452,    /* X11 keysym = 0x06a1: ђ */
    IM_KEY_Macedonia_gje                = 0x0453,    /* X11 keysym = 0x06a2: ѓ */
    IM_KEY_Ukrainian_ie                 = 0x0454,    /* X11 keysym = 0x06a4: є */
    IM_KEY_Macedonia_dse                = 0x0455,    /* X11 keysym = 0x06a5: ѕ */
    IM_KEY_Ukrainian_i                  = 0x0456,    /* X11 keysym = 0x06a6: і */
    IM_KEY_Ukrainian_yi                 = 0x0457,    /* X11 keysym = 0x06a7: ї */
    IM_KEY_Cyrillic_je                  = 0x0458,    /* X11 keysym = 0x06a8: ј */
    IM_KEY_Cyrillic_lje                 = 0x0459,    /* X11 keysym = 0x06a9: љ */
    IM_KEY_Cyrillic_nje                 = 0x045a,    /* X11 keysym = 0x06aa: њ */
    IM_KEY_Serbian_tshe                 = 0x045b,    /* X11 keysym = 0x06ab: ћ */
    IM_KEY_Macedonia_kje                = 0x045c,    /* X11 keysym = 0x06ac: ќ */
    IM_KEY_Byelorussian_shortu          = 0x045e,    /* X11 keysym = 0x06ae: ў */
    IM_KEY_Cyrillic_dzhe                = 0x045f,    /* X11 keysym = 0x06af: џ */
    IM_KEY_Ukrainian_GHE_WITH_UPTURN    = 0x0490,    /* X11 keysym = 0x06bd: Ґ */
    IM_KEY_Ukrainian_ghe_with_upturn    = 0x0491,    /* X11 keysym = 0x06ad: ґ */
    IM_KEY_Cyrillic_GHE_bar             = 0x0492,    /* X11 keysym = 0x1000492: Ғ */
    IM_KEY_Cyrillic_ghe_bar             = 0x0493,    /* X11 keysym = 0x1000493: ғ */
    IM_KEY_Cyrillic_ZHE_descender       = 0x0496,    /* X11 keysym = 0x1000496: Җ */
    IM_KEY_Cyrillic_zhe_descender       = 0x0497,    /* X11 keysym = 0x1000497: җ */
    IM_KEY_Cyrillic_KA_descender        = 0x049a,    /* X11 keysym = 0x100049a: Қ */
    IM_KEY_Cyrillic_ka_descender        = 0x049b,    /* X11 keysym = 0x100049b: қ */
    IM_KEY_Cyrillic_KA_vertstroke       = 0x049c,    /* X11 keysym = 0x100049c: Ҝ */
    IM_KEY_Cyrillic_ka_vertstroke       = 0x049d,    /* X11 keysym = 0x100049d: ҝ */
    IM_KEY_Cyrillic_EN_descender        = 0x04a2,    /* X11 keysym = 0x10004a2: Ң */
    IM_KEY_Cyrillic_en_descender        = 0x04a3,    /* X11 keysym = 0x10004a3: ң */
    IM_KEY_Cyrillic_U_straight          = 0x04ae,    /* X11 keysym = 0x10004ae: Ү */
    IM_KEY_Cyrillic_u_straight          = 0x04af,    /* X11 keysym = 0x10004af: ү */
    IM_KEY_Cyrillic_U_straight_bar      = 0x04b0,    /* X11 keysym = 0x10004b0: Ұ */
    IM_KEY_Cyrillic_u_straight_bar      = 0x04b1,    /* X11 keysym = 0x10004b1: ұ */
    IM_KEY_Cyrillic_HA_descender        = 0x04b2,    /* X11 keysym = 0x10004b2: Ҳ */
    IM_KEY_Cyrillic_ha_descender        = 0x04b3,    /* X11 keysym = 0x10004b3: ҳ */
    IM_KEY_Cyrillic_CHE_descender       = 0x04b6,    /* X11 keysym = 0x10004b6: Ҷ */
    IM_KEY_Cyrillic_che_descender       = 0x04b7,    /* X11 keysym = 0x10004b7: ҷ */
    IM_KEY_Cyrillic_CHE_vertstroke      = 0x04b8,    /* X11 keysym = 0x10004b8: Ҹ */
    IM_KEY_Cyrillic_che_vertstroke      = 0x04b9,    /* X11 keysym = 0x10004b9: ҹ */
    IM_KEY_Cyrillic_SHHA                = 0x04ba,    /* X11 keysym = 0x10004ba: Һ */
    IM_KEY_Cyrillic_shha                = 0x04bb,    /* X11 keysym = 0x10004bb: һ */
    IM_KEY_Cyrillic_SCHWA               = 0x04d8,    /* X11 keysym = 0x10004d8: Ә */
    IM_KEY_Cyrillic_schwa               = 0x04d9,    /* X11 keysym = 0x10004d9: ә */
    IM_KEY_Cyrillic_I_macron            = 0x04e2,    /* X11 keysym = 0x10004e2: Ӣ */
    IM_KEY_Cyrillic_i_macron            = 0x04e3,    /* X11 keysym = 0x10004e3: ӣ */
    IM_KEY_Cyrillic_O_bar               = 0x04e8,    /* X11 keysym = 0x10004e8: Ө */
    IM_KEY_Cyrillic_o_bar               = 0x04e9,    /* X11 keysym = 0x10004e9: ө */
    IM_KEY_Cyrillic_U_macron            = 0x04ee,    /* X11 keysym = 0x10004ee: Ӯ */
    IM_KEY_Cyrillic_u_macron            = 0x04ef,    /* X11 keysym = 0x10004ef: ӯ */
    IM_KEY_Armenian_AYB                 = 0x0531,    /* X11 keysym = 0x1000531: Ա */
    IM_KEY_Armenian_BEN                 = 0x0532,    /* X11 keysym = 0x1000532: Բ */
    IM_KEY_Armenian_GIM                 = 0x0533,    /* X11 keysym = 0x1000533: Գ */
    IM_KEY_Armenian_DA                  = 0x0534,    /* X11 keysym = 0x1000534: Դ */
    IM_KEY_Armenian_YECH                = 0x0535,    /* X11 keysym = 0x1000535: Ե */
    IM_KEY_Armenian_ZA                  = 0x0536,    /* X11 keysym = 0x1000536: Զ */
    IM_KEY_Armenian_E                   = 0x0537,    /* X11 keysym = 0x1000537: Է */
    IM_KEY_Armenian_AT                  = 0x0538,    /* X11 keysym = 0x1000538: Ը */
    IM_KEY_Armenian_TO                  = 0x0539,    /* X11 keysym = 0x1000539: Թ */
    IM_KEY_Armenian_ZHE                 = 0x053a,    /* X11 keysym = 0x100053a: Ժ */
    IM_KEY_Armenian_INI                 = 0x053b,    /* X11 keysym = 0x100053b: Ի */
    IM_KEY_Armenian_LYUN                = 0x053c,    /* X11 keysym = 0x100053c: Լ */
    IM_KEY_Armenian_KHE                 = 0x053d,    /* X11 keysym = 0x100053d: Խ */
    IM_KEY_Armenian_TSA                 = 0x053e,    /* X11 keysym = 0x100053e: Ծ */
    IM_KEY_Armenian_KEN                 = 0x053f,    /* X11 keysym = 0x100053f: Կ */
    IM_KEY_Armenian_HO                  = 0x0540,    /* X11 keysym = 0x1000540: Հ */
    IM_KEY_Armenian_DZA                 = 0x0541,    /* X11 keysym = 0x1000541: Ձ */
    IM_KEY_Armenian_GHAT                = 0x0542,    /* X11 keysym = 0x1000542: Ղ */
    IM_KEY_Armenian_TCHE                = 0x0543,    /* X11 keysym = 0x1000543: Ճ */
    IM_KEY_Armenian_MEN                 = 0x0544,    /* X11 keysym = 0x1000544: Մ */
    IM_KEY_Armenian_HI                  = 0x0545,    /* X11 keysym = 0x1000545: Յ */
    IM_KEY_Armenian_NU                  = 0x0546,    /* X11 keysym = 0x1000546: Ն */
    IM_KEY_Armenian_SHA                 = 0x0547,    /* X11 keysym = 0x1000547: Շ */
    IM_KEY_Armenian_VO                  = 0x0548,    /* X11 keysym = 0x1000548: Ո */
    IM_KEY_Armenian_CHA                 = 0x0549,    /* X11 keysym = 0x1000549: Չ */
    IM_KEY_Armenian_PE                  = 0x054a,    /* X11 keysym = 0x100054a: Պ */
    IM_KEY_Armenian_JE                  = 0x054b,    /* X11 keysym = 0x100054b: Ջ */
    IM_KEY_Armenian_RA                  = 0x054c,    /* X11 keysym = 0x100054c: Ռ */
    IM_KEY_Armenian_SE                  = 0x054d,    /* X11 keysym = 0x100054d: Ս */
    IM_KEY_Armenian_VEV                 = 0x054e,    /* X11 keysym = 0x100054e: Վ */
    IM_KEY_Armenian_TYUN                = 0x054f,    /* X11 keysym = 0x100054f: Տ */
    IM_KEY_Armenian_RE                  = 0x0550,    /* X11 keysym = 0x1000550: Ր */
    IM_KEY_Armenian_TSO                 = 0x0551,    /* X11 keysym = 0x1000551: Ց */
    IM_KEY_Armenian_VYUN                = 0x0552,    /* X11 keysym = 0x1000552: Ւ */
    IM_KEY_Armenian_PYUR                = 0x0553,    /* X11 keysym = 0x1000553: Փ */
    IM_KEY_Armenian_KE                  = 0x0554,    /* X11 keysym = 0x1000554: Ք */
    IM_KEY_Armenian_O                   = 0x0555,    /* X11 keysym = 0x1000555: Օ */
    IM_KEY_Armenian_FE                  = 0x0556,    /* X11 keysym = 0x1000556: Ֆ */
    IM_KEY_Armenian_apostrophe          = 0x055a,    /* X11 keysym = 0x100055a: ՚ */
    IM_KEY_Armenian_accent              = 0x055b,    /* X11 keysym = 0x100055b: ՛ */
    IM_KEY_Armenian_exclam              = 0x055c,    /* X11 keysym = 0x100055c: ՜ */
    IM_KEY_Armenian_separation_mark     = 0x055d,    /* X11 keysym = 0x100055d: ՝ */
    IM_KEY_Armenian_question            = 0x055e,    /* X11 keysym = 0x100055e: ՞ */
    IM_KEY_Armenian_ayb                 = 0x0561,    /* X11 keysym = 0x1000561: ա */
    IM_KEY_Armenian_ben                 = 0x0562,    /* X11 keysym = 0x1000562: բ */
    IM_KEY_Armenian_gim                 = 0x0563,    /* X11 keysym = 0x1000563: գ */
    IM_KEY_Armenian_da                  = 0x0564,    /* X11 keysym = 0x1000564: դ */
    IM_KEY_Armenian_yech                = 0x0565,    /* X11 keysym = 0x1000565: ե */
    IM_KEY_Armenian_za                  = 0x0566,    /* X11 keysym = 0x1000566: զ */
    IM_KEY_Armenian_e                   = 0x0567,    /* X11 keysym = 0x1000567: է */
    IM_KEY_Armenian_at                  = 0x0568,    /* X11 keysym = 0x1000568: ը */
    IM_KEY_Armenian_to                  = 0x0569,    /* X11 keysym = 0x1000569: թ */
    IM_KEY_Armenian_zhe                 = 0x056a,    /* X11 keysym = 0x100056a: ժ */
    IM_KEY_Armenian_ini                 = 0x056b,    /* X11 keysym = 0x100056b: ի */
    IM_KEY_Armenian_lyun                = 0x056c,    /* X11 keysym = 0x100056c: լ */
    IM_KEY_Armenian_khe                 = 0x056d,    /* X11 keysym = 0x100056d: խ */
    IM_KEY_Armenian_tsa                 = 0x056e,    /* X11 keysym = 0x100056e: ծ */
    IM_KEY_Armenian_ken                 = 0x056f,    /* X11 keysym = 0x100056f: կ */
    IM_KEY_Armenian_ho                  = 0x0570,    /* X11 keysym = 0x1000570: հ */
    IM_KEY_Armenian_dza                 = 0x0571,    /* X11 keysym = 0x1000571: ձ */
    IM_KEY_Armenian_ghat                = 0x0572,    /* X11 keysym = 0x1000572: ղ */
    IM_KEY_Armenian_tche                = 0x0573,    /* X11 keysym = 0x1000573: ճ */
    IM_KEY_Armenian_men                 = 0x0574,    /* X11 keysym = 0x1000574: մ */
    IM_KEY_Armenian_hi                  = 0x0575,    /* X11 keysym = 0x1000575: յ */
    IM_KEY_Armenian_nu                  = 0x0576,    /* X11 keysym = 0x1000576: ն */
    IM_KEY_Armenian_sha                 = 0x0577,    /* X11 keysym = 0x1000577: շ */
    IM_KEY_Armenian_vo                  = 0x0578,    /* X11 keysym = 0x1000578: ո */
    IM_KEY_Armenian_cha                 = 0x0579,    /* X11 keysym = 0x1000579: չ */
    IM_KEY_Armenian_pe                  = 0x057a,    /* X11 keysym = 0x100057a: պ */
    IM_KEY_Armenian_je                  = 0x057b,    /* X11 keysym = 0x100057b: ջ */
    IM_KEY_Armenian_ra                  = 0x057c,    /* X11 keysym = 0x100057c: ռ */
    IM_KEY_Armenian_se                  = 0x057d,    /* X11 keysym = 0x100057d: ս */
    IM_KEY_Armenian_vev                 = 0x057e,    /* X11 keysym = 0x100057e: վ */
    IM_KEY_Armenian_tyun                = 0x057f,    /* X11 keysym = 0x100057f: տ */
    IM_KEY_Armenian_re                  = 0x0580,    /* X11 keysym = 0x1000580: ր */
    IM_KEY_Armenian_tso                 = 0x0581,    /* X11 keysym = 0x1000581: ց */
    IM_KEY_Armenian_vyun                = 0x0582,    /* X11 keysym = 0x1000582: ւ */
    IM_KEY_Armenian_pyur                = 0x0583,    /* X11 keysym = 0x1000583: փ */
    IM_KEY_Armenian_ke                  = 0x0584,    /* X11 keysym = 0x1000584: ք */
    IM_KEY_Armenian_o                   = 0x0585,    /* X11 keysym = 0x1000585: օ */
    IM_KEY_Armenian_fe                  = 0x0586,    /* X11 keysym = 0x1000586: ֆ */
    IM_KEY_Armenian_ligature_ew         = 0x0587,    /* X11 keysym = 0x1000587: և */
    IM_KEY_Armenian_full_stop           = 0x0589,    /* X11 keysym = 0x1000589: ։ */
    IM_KEY_Armenian_hyphen              = 0x058a,    /* X11 keysym = 0x100058a: ֊ */
    IM_KEY_hebrew_aleph                 = 0x05d0,    /* X11 keysym = 0x0ce0: א */
    IM_KEY_hebrew_bet                   = 0x05d1,    /* X11 keysym = 0x0ce1: ב */
    IM_KEY_hebrew_gimel                 = 0x05d2,    /* X11 keysym = 0x0ce2: ג */
    IM_KEY_hebrew_dalet                 = 0x05d3,    /* X11 keysym = 0x0ce3: ד */
    IM_KEY_hebrew_he                    = 0x05d4,    /* X11 keysym = 0x0ce4: ה */
    IM_KEY_hebrew_waw                   = 0x05d5,    /* X11 keysym = 0x0ce5: ו */
    IM_KEY_hebrew_zain                  = 0x05d6,    /* X11 keysym = 0x0ce6: ז */
    IM_KEY_hebrew_chet                  = 0x05d7,    /* X11 keysym = 0x0ce7: ח */
    IM_KEY_hebrew_tet                   = 0x05d8,    /* X11 keysym = 0x0ce8: ט */
    IM_KEY_hebrew_yod                   = 0x05d9,    /* X11 keysym = 0x0ce9: י */
    IM_KEY_hebrew_finalkaph             = 0x05da,    /* X11 keysym = 0x0cea: ך */
    IM_KEY_hebrew_kaph                  = 0x05db,    /* X11 keysym = 0x0ceb: כ */
    IM_KEY_hebrew_lamed                 = 0x05dc,    /* X11 keysym = 0x0cec: ל */
    IM_KEY_hebrew_finalmem              = 0x05dd,    /* X11 keysym = 0x0ced: ם */
    IM_KEY_hebrew_mem                   = 0x05de,    /* X11 keysym = 0x0cee: מ */
    IM_KEY_hebrew_finalnun              = 0x05df,    /* X11 keysym = 0x0cef: ן */
    IM_KEY_hebrew_nun                   = 0x05e0,    /* X11 keysym = 0x0cf0: נ */
    IM_KEY_hebrew_samech                = 0x05e1,    /* X11 keysym = 0x0cf1: ס */
    IM_KEY_hebrew_ayin                  = 0x05e2,    /* X11 keysym = 0x0cf2: ע */
    IM_KEY_hebrew_finalpe               = 0x05e3,    /* X11 keysym = 0x0cf3: ף */
    IM_KEY_hebrew_pe                    = 0x05e4,    /* X11 keysym = 0x0cf4: פ */
    IM_KEY_hebrew_finalzade             = 0x05e5,    /* X11 keysym = 0x0cf5: ץ */
    IM_KEY_hebrew_zade                  = 0x05e6,    /* X11 keysym = 0x0cf6: צ */
    IM_KEY_hebrew_qoph                  = 0x05e7,    /* X11 keysym = 0x0cf7: ק */
    IM_KEY_hebrew_resh                  = 0x05e8,    /* X11 keysym = 0x0cf8: ר */
    IM_KEY_hebrew_shin                  = 0x05e9,    /* X11 keysym = 0x0cf9: ש */
    IM_KEY_hebrew_taw                   = 0x05ea,    /* X11 keysym = 0x0cfa: ת */
    IM_KEY_Arabic_comma                 = 0x060c,    /* X11 keysym = 0x05ac: ، */
    IM_KEY_Arabic_semicolon             = 0x061b,    /* X11 keysym = 0x05bb: ؛ */
    IM_KEY_Arabic_question_mark         = 0x061f,    /* X11 keysym = 0x05bf: ؟ */
    IM_KEY_Arabic_hamza                 = 0x0621,    /* X11 keysym = 0x05c1: ء */
    IM_KEY_Arabic_maddaonalef           = 0x0622,    /* X11 keysym = 0x05c2: آ */
    IM_KEY_Arabic_hamzaonalef           = 0x0623,    /* X11 keysym = 0x05c3: أ */
    IM_KEY_Arabic_hamzaonwaw            = 0x0624,    /* X11 keysym = 0x05c4: ؤ */
    IM_KEY_Arabic_hamzaunderalef        = 0x0625,    /* X11 keysym = 0x05c5: إ */
    IM_KEY_Arabic_hamzaonyeh            = 0x0626,    /* X11 keysym = 0x05c6: ئ */
    IM_KEY_Arabic_alef                  = 0x0627,    /* X11 keysym = 0x05c7: ا */
    IM_KEY_Arabic_beh                   = 0x0628,    /* X11 keysym = 0x05c8: ب */
    IM_KEY_Arabic_tehmarbuta            = 0x0629,    /* X11 keysym = 0x05c9: ة */
    IM_KEY_Arabic_teh                   = 0x062a,    /* X11 keysym = 0x05ca: ت */
    IM_KEY_Arabic_theh                  = 0x062b,    /* X11 keysym = 0x05cb: ث */
    IM_KEY_Arabic_jeem                  = 0x062c,    /* X11 keysym = 0x05cc: ج */
    IM_KEY_Arabic_hah                   = 0x062d,    /* X11 keysym = 0x05cd: ح */
    IM_KEY_Arabic_khah                  = 0x062e,    /* X11 keysym = 0x05ce: خ */
    IM_KEY_Arabic_dal                   = 0x062f,    /* X11 keysym = 0x05cf: د */
    IM_KEY_Arabic_thal                  = 0x0630,    /* X11 keysym = 0x05d0: ذ */
    IM_KEY_Arabic_ra                    = 0x0631,    /* X11 keysym = 0x05d1: ر */
    IM_KEY_Arabic_zain                  = 0x0632,    /* X11 keysym = 0x05d2: ز */
    IM_KEY_Arabic_seen                  = 0x0633,    /* X11 keysym = 0x05d3: س */
    IM_KEY_Arabic_sheen                 = 0x0634,    /* X11 keysym = 0x05d4: ش */
    IM_KEY_Arabic_sad                   = 0x0635,    /* X11 keysym = 0x05d5: ص */
    IM_KEY_Arabic_dad                   = 0x0636,    /* X11 keysym = 0x05d6: ض */
    IM_KEY_Arabic_tah                   = 0x0637,    /* X11 keysym = 0x05d7: ط */
    IM_KEY_Arabic_zah                   = 0x0638,    /* X11 keysym = 0x05d8: ظ */
    IM_KEY_Arabic_ain                   = 0x0639,    /* X11 keysym = 0x05d9: ع */
    IM_KEY_Arabic_ghain                 = 0x063a,    /* X11 keysym = 0x05da: غ */
    IM_KEY_Arabic_tatweel               = 0x0640,    /* X11 keysym = 0x05e0: ـ */
    IM_KEY_Arabic_feh                   = 0x0641,    /* X11 keysym = 0x05e1: ف */
    IM_KEY_Arabic_qaf                   = 0x0642,    /* X11 keysym = 0x05e2: ق */
    IM_KEY_Arabic_kaf                   = 0x0643,    /* X11 keysym = 0x05e3: ك */
    IM_KEY_Arabic_lam                   = 0x0644,    /* X11 keysym = 0x05e4: ل */
    IM_KEY_Arabic_meem                  = 0x0645,    /* X11 keysym = 0x05e5: م */
    IM_KEY_Arabic_noon                  = 0x0646,    /* X11 keysym = 0x05e6: ن */
    IM_KEY_Arabic_ha                    = 0x0647,    /* X11 keysym = 0x05e7: ه */
    IM_KEY_Arabic_waw                   = 0x0648,    /* X11 keysym = 0x05e8: و */
    IM_KEY_Arabic_alefmaksura           = 0x0649,    /* X11 keysym = 0x05e9: ى */
    IM_KEY_Arabic_yeh                   = 0x064a,    /* X11 keysym = 0x05ea: ي */
    IM_KEY_Arabic_fathatan              = 0x064b,    /* X11 keysym = 0x05eb: ً */
    IM_KEY_Arabic_dammatan              = 0x064c,    /* X11 keysym = 0x05ec: ٌ */
    IM_KEY_Arabic_kasratan              = 0x064d,    /* X11 keysym = 0x05ed: ٍ */
    IM_KEY_Arabic_fatha                 = 0x064e,    /* X11 keysym = 0x05ee: َ */
    IM_KEY_Arabic_damma                 = 0x064f,    /* X11 keysym = 0x05ef: ُ */
    IM_KEY_Arabic_kasra                 = 0x0650,    /* X11 keysym = 0x05f0: ِ */
    IM_KEY_Arabic_shadda                = 0x0651,    /* X11 keysym = 0x05f1: ّ */
    IM_KEY_Arabic_sukun                 = 0x0652,    /* X11 keysym = 0x05f2: ْ */
    IM_KEY_Arabic_madda_above           = 0x0653,    /* X11 keysym = 0x1000653: ٓ */
    IM_KEY_Arabic_hamza_above           = 0x0654,    /* X11 keysym = 0x1000654: ٔ */
    IM_KEY_Arabic_hamza_below           = 0x0655,    /* X11 keysym = 0x1000655: ٕ */
    IM_KEY_Arabic_0                     = 0x0660,    /* X11 keysym = 0x1000660: ٠ */
    IM_KEY_Arabic_1                     = 0x0661,    /* X11 keysym = 0x1000661: ١ */
    IM_KEY_Arabic_2                     = 0x0662,    /* X11 keysym = 0x1000662: ٢ */
    IM_KEY_Arabic_3                     = 0x0663,    /* X11 keysym = 0x1000663: ٣ */
    IM_KEY_Arabic_4                     = 0x0664,    /* X11 keysym = 0x1000664: ٤ */
    IM_KEY_Arabic_5                     = 0x0665,    /* X11 keysym = 0x1000665: ٥ */
    IM_KEY_Arabic_6                     = 0x0666,    /* X11 keysym = 0x1000666: ٦ */
    IM_KEY_Arabic_7                     = 0x0667,    /* X11 keysym = 0x1000667: ٧ */
    IM_KEY_Arabic_8                     = 0x0668,    /* X11 keysym = 0x1000668: ٨ */
    IM_KEY_Arabic_9                     = 0x0669,    /* X11 keysym = 0x1000669: ٩ */
    IM_KEY_Arabic_percent               = 0x066a,    /* X11 keysym = 0x100066a: ٪ */
    IM_KEY_Arabic_superscript_alef      = 0x0670,    /* X11 keysym = 0x1000670: ٰ */
    IM_KEY_Arabic_tteh                  = 0x0679,    /* X11 keysym = 0x1000679: ٹ */
    IM_KEY_Arabic_peh                   = 0x067e,    /* X11 keysym = 0x100067e: پ */
    IM_KEY_Arabic_tcheh                 = 0x0686,    /* X11 keysym = 0x1000686: چ */
    IM_KEY_Arabic_ddal                  = 0x0688,    /* X11 keysym = 0x1000688: ڈ */
    IM_KEY_Arabic_rreh                  = 0x0691,    /* X11 keysym = 0x1000691: ڑ */
    IM_KEY_Arabic_jeh                   = 0x0698,    /* X11 keysym = 0x1000698: ژ */
    IM_KEY_Arabic_veh                   = 0x06a4,    /* X11 keysym = 0x10006a4: ڤ */
    IM_KEY_Arabic_keheh                 = 0x06a9,    /* X11 keysym = 0x10006a9: ک */
    IM_KEY_Arabic_gaf                   = 0x06af,    /* X11 keysym = 0x10006af: گ */
    IM_KEY_Arabic_noon_ghunna           = 0x06ba,    /* X11 keysym = 0x10006ba: ں */
    IM_KEY_Arabic_heh_doachashmee       = 0x06be,    /* X11 keysym = 0x10006be: ھ */
    IM_KEY_Arabic_heh_goal              = 0x06c1,    /* X11 keysym = 0x10006c1: ہ */
    IM_KEY_Arabic_farsi_yeh             = 0x06cc,    /* X11 keysym = 0x10006cc: ی */
    IM_KEY_Arabic_yeh_baree             = 0x06d2,    /* X11 keysym = 0x10006d2: ے */
    IM_KEY_Arabic_fullstop              = 0x06d4,    /* X11 keysym = 0x10006d4: ۔ */
    IM_KEY_Farsi_0                      = 0x06f0,    /* X11 keysym = 0x10006f0: ۰ */
    IM_KEY_Farsi_1                      = 0x06f1,    /* X11 keysym = 0x10006f1: ۱ */
    IM_KEY_Farsi_2                      = 0x06f2,    /* X11 keysym = 0x10006f2: ۲ */
    IM_KEY_Farsi_3                      = 0x06f3,    /* X11 keysym = 0x10006f3: ۳ */
    IM_KEY_Farsi_4                      = 0x06f4,    /* X11 keysym = 0x10006f4: ۴ */
    IM_KEY_Farsi_5                      = 0x06f5,    /* X11 keysym = 0x10006f5: ۵ */
    IM_KEY_Farsi_6                      = 0x06f6,    /* X11 keysym = 0x10006f6: ۶ */
    IM_KEY_Farsi_7                      = 0x06f7,    /* X11 keysym = 0x10006f7: ۷ */
    IM_KEY_Farsi_8                      = 0x06f8,    /* X11 keysym = 0x10006f8: ۸ */
    IM_KEY_Farsi_9                      = 0x06f9,    /* X11 keysym = 0x10006f9: ۹ */
    IM_KEY_Thai_kokai                   = 0x0e01,    /* X11 keysym = 0x0da1: ก */
    IM_KEY_Thai_khokhai                 = 0x0e02,    /* X11 keysym = 0x0da2: ข */
    IM_KEY_Thai_khokhuat                = 0x0e03,    /* X11 keysym = 0x0da3: ฃ */
    IM_KEY_Thai_khokhwai                = 0x0e04,    /* X11 keysym = 0x0da4: ค */
    IM_KEY_Thai_khokhon                 = 0x0e05,    /* X11 keysym = 0x0da5: ฅ */
    IM_KEY_Thai_khorakhang              = 0x0e06,    /* X11 keysym = 0x0da6: ฆ */
    IM_KEY_Thai_ngongu                  = 0x0e07,    /* X11 keysym = 0x0da7: ง */
    IM_KEY_Thai_chochan                 = 0x0e08,    /* X11 keysym = 0x0da8: จ */
    IM_KEY_Thai_choching                = 0x0e09,    /* X11 keysym = 0x0da9: ฉ */
    IM_KEY_Thai_chochang                = 0x0e0a,    /* X11 keysym = 0x0daa: ช */
    IM_KEY_Thai_soso                    = 0x0e0b,    /* X11 keysym = 0x0dab: ซ */
    IM_KEY_Thai_chochoe                 = 0x0e0c,    /* X11 keysym = 0x0dac: ฌ */
    IM_KEY_Thai_yoying                  = 0x0e0d,    /* X11 keysym = 0x0dad: ญ */
    IM_KEY_Thai_dochada                 = 0x0e0e,    /* X11 keysym = 0x0dae: ฎ */
    IM_KEY_Thai_topatak                 = 0x0e0f,    /* X11 keysym = 0x0daf: ฏ */
    IM_KEY_Thai_thothan                 = 0x0e10,    /* X11 keysym = 0x0db0: ฐ */
    IM_KEY_Thai_thonangmontho           = 0x0e11,    /* X11 keysym = 0x0db1: ฑ */
    IM_KEY_Thai_thophuthao              = 0x0e12,    /* X11 keysym = 0x0db2: ฒ */
    IM_KEY_Thai_nonen                   = 0x0e13,    /* X11 keysym = 0x0db3: ณ */
    IM_KEY_Thai_dodek                   = 0x0e14,    /* X11 keysym = 0x0db4: ด */
    IM_KEY_Thai_totao                   = 0x0e15,    /* X11 keysym = 0x0db5: ต */
    IM_KEY_Thai_thothung                = 0x0e16,    /* X11 keysym = 0x0db6: ถ */
    IM_KEY_Thai_thothahan               = 0x0e17,    /* X11 keysym = 0x0db7: ท */
    IM_KEY_Thai_thothong                = 0x0e18,    /* X11 keysym = 0x0db8: ธ */
    IM_KEY_Thai_nonu                    = 0x0e19,    /* X11 keysym = 0x0db9: น */
    IM_KEY_Thai_bobaimai                = 0x0e1a,    /* X11 keysym = 0x0dba: บ */
    IM_KEY_Thai_popla                   = 0x0e1b,    /* X11 keysym = 0x0dbb: ป */
    IM_KEY_Thai_phophung                = 0x0e1c,    /* X11 keysym = 0x0dbc: ผ */
    IM_KEY_Thai_fofa                    = 0x0e1d,    /* X11 keysym = 0x0dbd: ฝ */
    IM_KEY_Thai_phophan                 = 0x0e1e,    /* X11 keysym = 0x0dbe: พ */
    IM_KEY_Thai_fofan                   = 0x0e1f,    /* X11 keysym = 0x0dbf: ฟ */
    IM_KEY_Thai_phosamphao              = 0x0e20,    /* X11 keysym = 0x0dc0: ภ */
    IM_KEY_Thai_moma                    = 0x0e21,    /* X11 keysym = 0x0dc1: ม */
    IM_KEY_Thai_yoyak                   = 0x0e22,    /* X11 keysym = 0x0dc2: ย */
    IM_KEY_Thai_rorua                   = 0x0e23,    /* X11 keysym = 0x0dc3: ร */
    IM_KEY_Thai_ru                      = 0x0e24,    /* X11 keysym = 0x0dc4: ฤ */
    IM_KEY_Thai_loling                  = 0x0e25,    /* X11 keysym = 0x0dc5: ล */
    IM_KEY_Thai_lu                      = 0x0e26,    /* X11 keysym = 0x0dc6: ฦ */
    IM_KEY_Thai_wowaen                  = 0x0e27,    /* X11 keysym = 0x0dc7: ว */
    IM_KEY_Thai_sosala                  = 0x0e28,    /* X11 keysym = 0x0dc8: ศ */
    IM_KEY_Thai_sorusi                  = 0x0e29,    /* X11 keysym = 0x0dc9: ษ */
    IM_KEY_Thai_sosua                   = 0x0e2a,    /* X11 keysym = 0x0dca: ส */
    IM_KEY_Thai_hohip                   = 0x0e2b,    /* X11 keysym = 0x0dcb: ห */
    IM_KEY_Thai_lochula                 = 0x0e2c,    /* X11 keysym = 0x0dcc: ฬ */
    IM_KEY_Thai_oang                    = 0x0e2d,    /* X11 keysym = 0x0dcd: อ */
    IM_KEY_Thai_honokhuk                = 0x0e2e,    /* X11 keysym = 0x0dce: ฮ */
    IM_KEY_Thai_paiyannoi               = 0x0e2f,    /* X11 keysym = 0x0dcf: ฯ */
    IM_KEY_Thai_saraa                   = 0x0e30,    /* X11 keysym = 0x0dd0: ะ */
    IM_KEY_Thai_maihanakat              = 0x0e31,    /* X11 keysym = 0x0dd1: ั */
    IM_KEY_Thai_saraaa                  = 0x0e32,    /* X11 keysym = 0x0dd2: า */
    IM_KEY_Thai_saraam                  = 0x0e33,    /* X11 keysym = 0x0dd3: ำ */
    IM_KEY_Thai_sarai                   = 0x0e34,    /* X11 keysym = 0x0dd4: ิ */
    IM_KEY_Thai_saraii                  = 0x0e35,    /* X11 keysym = 0x0dd5: ี */
    IM_KEY_Thai_saraue                  = 0x0e36,    /* X11 keysym = 0x0dd6: ึ */
    IM_KEY_Thai_sarauee                 = 0x0e37,    /* X11 keysym = 0x0dd7: ื */
    IM_KEY_Thai_sarau                   = 0x0e38,    /* X11 keysym = 0x0dd8: ุ */
    IM_KEY_Thai_sarauu                  = 0x0e39,    /* X11 keysym = 0x0dd9: ู */
    IM_KEY_Thai_phinthu                 = 0x0e3a,    /* X11 keysym = 0x0dda: ฺ */
    IM_KEY_Thai_maihanakat_maitho       = 0x0e3e,    /* X11 keysym = 0x0dde: ฾ */
    IM_KEY_Thai_baht                    = 0x0e3f,    /* X11 keysym = 0x0ddf: ฿ */
    IM_KEY_Thai_sarae                   = 0x0e40,    /* X11 keysym = 0x0de0: เ */
    IM_KEY_Thai_saraae                  = 0x0e41,    /* X11 keysym = 0x0de1: แ */
    IM_KEY_Thai_sarao                   = 0x0e42,    /* X11 keysym = 0x0de2: โ */
    IM_KEY_Thai_saraaimaimuan           = 0x0e43,    /* X11 keysym = 0x0de3: ใ */
    IM_KEY_Thai_saraaimaimalai          = 0x0e44,    /* X11 keysym = 0x0de4: ไ */
    IM_KEY_Thai_lakkhangyao             = 0x0e45,    /* X11 keysym = 0x0de5: ๅ */
    IM_KEY_Thai_maiyamok                = 0x0e46,    /* X11 keysym = 0x0de6: ๆ */
    IM_KEY_Thai_maitaikhu               = 0x0e47,    /* X11 keysym = 0x0de7: ็ */
    IM_KEY_Thai_maiek                   = 0x0e48,    /* X11 keysym = 0x0de8: ่ */
    IM_KEY_Thai_maitho                  = 0x0e49,    /* X11 keysym = 0x0de9: ้ */
    IM_KEY_Thai_maitri                  = 0x0e4a,    /* X11 keysym = 0x0dea: ๊ */
    IM_KEY_Thai_maichattawa             = 0x0e4b,    /* X11 keysym = 0x0deb: ๋ */
    IM_KEY_Thai_thanthakhat             = 0x0e4c,    /* X11 keysym = 0x0dec: ์ */
    IM_KEY_Thai_nikhahit                = 0x0e4d,    /* X11 keysym = 0x0ded: ํ */
    IM_KEY_Thai_leksun                  = 0x0e50,    /* X11 keysym = 0x0df0: ๐ */
    IM_KEY_Thai_leknung                 = 0x0e51,    /* X11 keysym = 0x0df1: ๑ */
    IM_KEY_Thai_leksong                 = 0x0e52,    /* X11 keysym = 0x0df2: ๒ */
    IM_KEY_Thai_leksam                  = 0x0e53,    /* X11 keysym = 0x0df3: ๓ */
    IM_KEY_Thai_leksi                   = 0x0e54,    /* X11 keysym = 0x0df4: ๔ */
    IM_KEY_Thai_lekha                   = 0x0e55,    /* X11 keysym = 0x0df5: ๕ */
    IM_KEY_Thai_lekhok                  = 0x0e56,    /* X11 keysym = 0x0df6: ๖ */
    IM_KEY_Thai_lekchet                 = 0x0e57,    /* X11 keysym = 0x0df7: ๗ */
    IM_KEY_Thai_lekpaet                 = 0x0e58,    /* X11 keysym = 0x0df8: ๘ */
    IM_KEY_Thai_lekkao                  = 0x0e59,    /* X11 keysym = 0x0df9: ๙ */
    IM_KEY_Georgian_an                  = 0x10d0,    /* X11 keysym = 0x10010d0: ა */
    IM_KEY_Georgian_ban                 = 0x10d1,    /* X11 keysym = 0x10010d1: ბ */
    IM_KEY_Georgian_gan                 = 0x10d2,    /* X11 keysym = 0x10010d2: გ */
    IM_KEY_Georgian_don                 = 0x10d3,    /* X11 keysym = 0x10010d3: დ */
    IM_KEY_Georgian_en                  = 0x10d4,    /* X11 keysym = 0x10010d4: ე */
    IM_KEY_Georgian_vin                 = 0x10d5,    /* X11 keysym = 0x10010d5: ვ */
    IM_KEY_Georgian_zen                 = 0x10d6,    /* X11 keysym = 0x10010d6: ზ */
    IM_KEY_Georgian_tan                 = 0x10d7,    /* X11 keysym = 0x10010d7: თ */
    IM_KEY_Georgian_in                  = 0x10d8,    /* X11 keysym = 0x10010d8: ი */
    IM_KEY_Georgian_kan                 = 0x10d9,    /* X11 keysym = 0x10010d9: კ */
    IM_KEY_Georgian_las                 = 0x10da,    /* X11 keysym = 0x10010da: ლ */
    IM_KEY_Georgian_man                 = 0x10db,    /* X11 keysym = 0x10010db: მ */
    IM_KEY_Georgian_nar                 = 0x10dc,    /* X11 keysym = 0x10010dc: ნ */
    IM_KEY_Georgian_on                  = 0x10dd,    /* X11 keysym = 0x10010dd: ო */
    IM_KEY_Georgian_par                 = 0x10de,    /* X11 keysym = 0x10010de: პ */
    IM_KEY_Georgian_zhar                = 0x10df,    /* X11 keysym = 0x10010df: ჟ */
    IM_KEY_Georgian_rae                 = 0x10e0,    /* X11 keysym = 0x10010e0: რ */
    IM_KEY_Georgian_san                 = 0x10e1,    /* X11 keysym = 0x10010e1: ს */
    IM_KEY_Georgian_tar                 = 0x10e2,    /* X11 keysym = 0x10010e2: ტ */
    IM_KEY_Georgian_un                  = 0x10e3,    /* X11 keysym = 0x10010e3: უ */
    IM_KEY_Georgian_phar                = 0x10e4,    /* X11 keysym = 0x10010e4: ფ */
    IM_KEY_Georgian_khar                = 0x10e5,    /* X11 keysym = 0x10010e5: ქ */
    IM_KEY_Georgian_ghan                = 0x10e6,    /* X11 keysym = 0x10010e6: ღ */
    IM_KEY_Georgian_qar                 = 0x10e7,    /* X11 keysym = 0x10010e7: ყ */
    IM_KEY_Georgian_shin                = 0x10e8,    /* X11 keysym = 0x10010e8: შ */
    IM_KEY_Georgian_chin                = 0x10e9,    /* X11 keysym = 0x10010e9: ჩ */
    IM_KEY_Georgian_can                 = 0x10ea,    /* X11 keysym = 0x10010ea: ც */
    IM_KEY_Georgian_jil                 = 0x10eb,    /* X11 keysym = 0x10010eb: ძ */
    IM_KEY_Georgian_cil                 = 0x10ec,    /* X11 keysym = 0x10010ec: წ */
    IM_KEY_Georgian_char                = 0x10ed,    /* X11 keysym = 0x10010ed: ჭ */
    IM_KEY_Georgian_xan                 = 0x10ee,    /* X11 keysym = 0x10010ee: ხ */
    IM_KEY_Georgian_jhan                = 0x10ef,    /* X11 keysym = 0x10010ef: ჯ */
    IM_KEY_Georgian_hae                 = 0x10f0,    /* X11 keysym = 0x10010f0: ჰ */
    IM_KEY_Georgian_he                  = 0x10f1,    /* X11 keysym = 0x10010f1: ჱ */
    IM_KEY_Georgian_hie                 = 0x10f2,    /* X11 keysym = 0x10010f2: ჲ */
    IM_KEY_Georgian_we                  = 0x10f3,    /* X11 keysym = 0x10010f3: ჳ */
    IM_KEY_Georgian_har                 = 0x10f4,    /* X11 keysym = 0x10010f4: ჴ */
    IM_KEY_Georgian_hoe                 = 0x10f5,    /* X11 keysym = 0x10010f5: ჵ */
    IM_KEY_Georgian_fi                  = 0x10f6,    /* X11 keysym = 0x10010f6: ჶ */
    IM_KEY_Hangul_J_Kiyeog              = 0x11a8,    /* X11 keysym = 0x0ed4: ᆨ */
    IM_KEY_Hangul_J_SsangKiyeog         = 0x11a9,    /* X11 keysym = 0x0ed5: ᆩ */
    IM_KEY_Hangul_J_KiyeogSios          = 0x11aa,    /* X11 keysym = 0x0ed6: ᆪ */
    IM_KEY_Hangul_J_Nieun               = 0x11ab,    /* X11 keysym = 0x0ed7: ᆫ */
    IM_KEY_Hangul_J_NieunJieuj          = 0x11ac,    /* X11 keysym = 0x0ed8: ᆬ */
    IM_KEY_Hangul_J_NieunHieuh          = 0x11ad,    /* X11 keysym = 0x0ed9: ᆭ */
    IM_KEY_Hangul_J_Dikeud              = 0x11ae,    /* X11 keysym = 0x0eda: ᆮ */
    IM_KEY_Hangul_J_Rieul               = 0x11af,    /* X11 keysym = 0x0edb: ᆯ */
    IM_KEY_Hangul_J_RieulKiyeog         = 0x11b0,    /* X11 keysym = 0x0edc: ᆰ */
    IM_KEY_Hangul_J_RieulMieum          = 0x11b1,    /* X11 keysym = 0x0edd: ᆱ */
    IM_KEY_Hangul_J_RieulPieub          = 0x11b2,    /* X11 keysym = 0x0ede: ᆲ */
    IM_KEY_Hangul_J_RieulSios           = 0x11b3,    /* X11 keysym = 0x0edf: ᆳ */
    IM_KEY_Hangul_J_RieulTieut          = 0x11b4,    /* X11 keysym = 0x0ee0: ᆴ */
    IM_KEY_Hangul_J_RieulPhieuf         = 0x11b5,    /* X11 keysym = 0x0ee1: ᆵ */
    IM_KEY_Hangul_J_RieulHieuh          = 0x11b6,    /* X11 keysym = 0x0ee2: ᆶ */
    IM_KEY_Hangul_J_Mieum               = 0x11b7,    /* X11 keysym = 0x0ee3: ᆷ */
    IM_KEY_Hangul_J_Pieub               = 0x11b8,    /* X11 keysym = 0x0ee4: ᆸ */
    IM_KEY_Hangul_J_PieubSios           = 0x11b9,    /* X11 keysym = 0x0ee5: ᆹ */
    IM_KEY_Hangul_J_Sios                = 0x11ba,    /* X11 keysym = 0x0ee6: ᆺ */
    IM_KEY_Hangul_J_SsangSios           = 0x11bb,    /* X11 keysym = 0x0ee7: ᆻ */
    IM_KEY_Hangul_J_Ieung               = 0x11bc,    /* X11 keysym = 0x0ee8: ᆼ */
    IM_KEY_Hangul_J_Jieuj               = 0x11bd,    /* X11 keysym = 0x0ee9: ᆽ */
    IM_KEY_Hangul_J_Cieuc               = 0x11be,    /* X11 keysym = 0x0eea: ᆾ */
    IM_KEY_Hangul_J_Khieuq              = 0x11bf,    /* X11 keysym = 0x0eeb: ᆿ */
    IM_KEY_Hangul_J_Tieut               = 0x11c0,    /* X11 keysym = 0x0eec: ᇀ */
    IM_KEY_Hangul_J_Phieuf              = 0x11c1,    /* X11 keysym = 0x0eed: ᇁ */
    IM_KEY_Hangul_J_Hieuh               = 0x11c2,    /* X11 keysym = 0x0eee: ᇂ */
    IM_KEY_Hangul_J_PanSios             = 0x11eb,    /* X11 keysym = 0x0ef8: ᇫ */
    IM_KEY_Hangul_J_YeorinHieuh         = 0x11f9,    /* X11 keysym = 0x0efa: ᇹ */
    IM_KEY_Babovedot                    = 0x1e02,    /* X11 keysym = 0x1001e02: Ḃ */
    IM_KEY_babovedot                    = 0x1e03,    /* X11 keysym = 0x1001e03: ḃ */
    IM_KEY_Dabovedot                    = 0x1e0a,    /* X11 keysym = 0x1001e0a: Ḋ */
    IM_KEY_dabovedot                    = 0x1e0b,    /* X11 keysym = 0x1001e0b: ḋ */
    IM_KEY_Fabovedot                    = 0x1e1e,    /* X11 keysym = 0x1001e1e: Ḟ */
    IM_KEY_fabovedot                    = 0x1e1f,    /* X11 keysym = 0x1001e1f: ḟ */
    IM_KEY_Lbelowdot                    = 0x1e36,    /* X11 keysym = 0x1001e36: Ḷ */
    IM_KEY_lbelowdot                    = 0x1e37,    /* X11 keysym = 0x1001e37: ḷ */
    IM_KEY_Mabovedot                    = 0x1e40,    /* X11 keysym = 0x1001e40: Ṁ */
    IM_KEY_mabovedot                    = 0x1e41,    /* X11 keysym = 0x1001e41: ṁ */
    IM_KEY_Pabovedot                    = 0x1e56,    /* X11 keysym = 0x1001e56: Ṗ */
    IM_KEY_pabovedot                    = 0x1e57,    /* X11 keysym = 0x1001e57: ṗ */
    IM_KEY_Sabovedot                    = 0x1e60,    /* X11 keysym = 0x1001e60: Ṡ */
    IM_KEY_sabovedot                    = 0x1e61,    /* X11 keysym = 0x1001e61: ṡ */
    IM_KEY_Tabovedot                    = 0x1e6a,    /* X11 keysym = 0x1001e6a: Ṫ */
    IM_KEY_tabovedot                    = 0x1e6b,    /* X11 keysym = 0x1001e6b: ṫ */
    IM_KEY_Wgrave                       = 0x1e80,    /* X11 keysym = 0x1001e80: Ẁ */
    IM_KEY_wgrave                       = 0x1e81,    /* X11 keysym = 0x1001e81: ẁ */
    IM_KEY_Wacute                       = 0x1e82,    /* X11 keysym = 0x1001e82: Ẃ */
    IM_KEY_wacute                       = 0x1e83,    /* X11 keysym = 0x1001e83: ẃ */
    IM_KEY_Wdiaeresis                   = 0x1e84,    /* X11 keysym = 0x1001e84: Ẅ */
    IM_KEY_wdiaeresis                   = 0x1e85,    /* X11 keysym = 0x1001e85: ẅ */
    IM_KEY_Xabovedot                    = 0x1e8a,    /* X11 keysym = 0x1001e8a: Ẋ */
    IM_KEY_xabovedot                    = 0x1e8b,    /* X11 keysym = 0x1001e8b: ẋ */
    IM_KEY_Abelowdot                    = 0x1ea0,    /* X11 keysym = 0x1001ea0: Ạ */
    IM_KEY_abelowdot                    = 0x1ea1,    /* X11 keysym = 0x1001ea1: ạ */
    IM_KEY_Ahook                        = 0x1ea2,    /* X11 keysym = 0x1001ea2: Ả */
    IM_KEY_ahook                        = 0x1ea3,    /* X11 keysym = 0x1001ea3: ả */
    IM_KEY_Acircumflexacute             = 0x1ea4,    /* X11 keysym = 0x1001ea4: Ấ */
    IM_KEY_acircumflexacute             = 0x1ea5,    /* X11 keysym = 0x1001ea5: ấ */
    IM_KEY_Acircumflexgrave             = 0x1ea6,    /* X11 keysym = 0x1001ea6: Ầ */
    IM_KEY_acircumflexgrave             = 0x1ea7,    /* X11 keysym = 0x1001ea7: ầ */
    IM_KEY_Acircumflexhook              = 0x1ea8,    /* X11 keysym = 0x1001ea8: Ẩ */
    IM_KEY_acircumflexhook              = 0x1ea9,    /* X11 keysym = 0x1001ea9: ẩ */
    IM_KEY_Acircumflextilde             = 0x1eaa,    /* X11 keysym = 0x1001eaa: Ẫ */
    IM_KEY_acircumflextilde             = 0x1eab,    /* X11 keysym = 0x1001eab: ẫ */
    IM_KEY_Acircumflexbelowdot          = 0x1eac,    /* X11 keysym = 0x1001eac: Ậ */
    IM_KEY_acircumflexbelowdot          = 0x1ead,    /* X11 keysym = 0x1001ead: ậ */
    IM_KEY_Abreveacute                  = 0x1eae,    /* X11 keysym = 0x1001eae: Ắ */
    IM_KEY_abreveacute                  = 0x1eaf,    /* X11 keysym = 0x1001eaf: ắ */
    IM_KEY_Abrevegrave                  = 0x1eb0,    /* X11 keysym = 0x1001eb0: Ằ */
    IM_KEY_abrevegrave                  = 0x1eb1,    /* X11 keysym = 0x1001eb1: ằ */
    IM_KEY_Abrevehook                   = 0x1eb2,    /* X11 keysym = 0x1001eb2: Ẳ */
    IM_KEY_abrevehook                   = 0x1eb3,    /* X11 keysym = 0x1001eb3: ẳ */
    IM_KEY_Abrevetilde                  = 0x1eb4,    /* X11 keysym = 0x1001eb4: Ẵ */
    IM_KEY_abrevetilde                  = 0x1eb5,    /* X11 keysym = 0x1001eb5: ẵ */
    IM_KEY_Abrevebelowdot               = 0x1eb6,    /* X11 keysym = 0x1001eb6: Ặ */
    IM_KEY_abrevebelowdot               = 0x1eb7,    /* X11 keysym = 0x1001eb7: ặ */
    IM_KEY_Ebelowdot                    = 0x1eb8,    /* X11 keysym = 0x1001eb8: Ẹ */
    IM_KEY_ebelowdot                    = 0x1eb9,    /* X11 keysym = 0x1001eb9: ẹ */
    IM_KEY_Ehook                        = 0x1eba,    /* X11 keysym = 0x1001eba: Ẻ */
    IM_KEY_ehook                        = 0x1ebb,    /* X11 keysym = 0x1001ebb: ẻ */
    IM_KEY_Etilde                       = 0x1ebc,    /* X11 keysym = 0x1001ebc: Ẽ */
    IM_KEY_etilde                       = 0x1ebd,    /* X11 keysym = 0x1001ebd: ẽ */
    IM_KEY_Ecircumflexacute             = 0x1ebe,    /* X11 keysym = 0x1001ebe: Ế */
    IM_KEY_ecircumflexacute             = 0x1ebf,    /* X11 keysym = 0x1001ebf: ế */
    IM_KEY_Ecircumflexgrave             = 0x1ec0,    /* X11 keysym = 0x1001ec0: Ề */
    IM_KEY_ecircumflexgrave             = 0x1ec1,    /* X11 keysym = 0x1001ec1: ề */
    IM_KEY_Ecircumflexhook              = 0x1ec2,    /* X11 keysym = 0x1001ec2: Ể */
    IM_KEY_ecircumflexhook              = 0x1ec3,    /* X11 keysym = 0x1001ec3: ể */
    IM_KEY_Ecircumflextilde             = 0x1ec4,    /* X11 keysym = 0x1001ec4: Ễ */
    IM_KEY_ecircumflextilde             = 0x1ec5,    /* X11 keysym = 0x1001ec5: ễ */
    IM_KEY_Ecircumflexbelowdot          = 0x1ec6,    /* X11 keysym = 0x1001ec6: Ệ */
    IM_KEY_ecircumflexbelowdot          = 0x1ec7,    /* X11 keysym = 0x1001ec7: ệ */
    IM_KEY_Ihook                        = 0x1ec8,    /* X11 keysym = 0x1001ec8: Ỉ */
    IM_KEY_ihook                        = 0x1ec9,    /* X11 keysym = 0x1001ec9: ỉ */
    IM_KEY_Ibelowdot                    = 0x1eca,    /* X11 keysym = 0x1001eca: Ị */
    IM_KEY_ibelowdot                    = 0x1ecb,    /* X11 keysym = 0x1001ecb: ị */
    IM_KEY_Obelowdot                    = 0x1ecc,    /* X11 keysym = 0x1001ecc: Ọ */
    IM_KEY_obelowdot                    = 0x1ecd,    /* X11 keysym = 0x1001ecd: ọ */
    IM_KEY_Ohook                        = 0x1ece,    /* X11 keysym = 0x1001ece: Ỏ */
    IM_KEY_ohook                        = 0x1ecf,    /* X11 keysym = 0x1001ecf: ỏ */
    IM_KEY_Ocircumflexacute             = 0x1ed0,    /* X11 keysym = 0x1001ed0: Ố */
    IM_KEY_ocircumflexacute             = 0x1ed1,    /* X11 keysym = 0x1001ed1: ố */
    IM_KEY_Ocircumflexgrave             = 0x1ed2,    /* X11 keysym = 0x1001ed2: Ồ */
    IM_KEY_ocircumflexgrave             = 0x1ed3,    /* X11 keysym = 0x1001ed3: ồ */
    IM_KEY_Ocircumflexhook              = 0x1ed4,    /* X11 keysym = 0x1001ed4: Ổ */
    IM_KEY_ocircumflexhook              = 0x1ed5,    /* X11 keysym = 0x1001ed5: ổ */
    IM_KEY_Ocircumflextilde             = 0x1ed6,    /* X11 keysym = 0x1001ed6: Ỗ */
    IM_KEY_ocircumflextilde             = 0x1ed7,    /* X11 keysym = 0x1001ed7: ỗ */
    IM_KEY_Ocircumflexbelowdot          = 0x1ed8,    /* X11 keysym = 0x1001ed8: Ộ */
    IM_KEY_ocircumflexbelowdot          = 0x1ed9,    /* X11 keysym = 0x1001ed9: ộ */
    IM_KEY_Ohornacute                   = 0x1eda,    /* X11 keysym = 0x1001eda: Ớ */
    IM_KEY_ohornacute                   = 0x1edb,    /* X11 keysym = 0x1001edb: ớ */
    IM_KEY_Ohorngrave                   = 0x1edc,    /* X11 keysym = 0x1001edc: Ờ */
    IM_KEY_ohorngrave                   = 0x1edd,    /* X11 keysym = 0x1001edd: ờ */
    IM_KEY_Ohornhook                    = 0x1ede,    /* X11 keysym = 0x1001ede: Ở */
    IM_KEY_ohornhook                    = 0x1edf,    /* X11 keysym = 0x1001edf: ở */
    IM_KEY_Ohorntilde                   = 0x1ee0,    /* X11 keysym = 0x1001ee0: Ỡ */
    IM_KEY_ohorntilde                   = 0x1ee1,    /* X11 keysym = 0x1001ee1: ỡ */
    IM_KEY_Ohornbelowdot                = 0x1ee2,    /* X11 keysym = 0x1001ee2: Ợ */
    IM_KEY_ohornbelowdot                = 0x1ee3,    /* X11 keysym = 0x1001ee3: ợ */
    IM_KEY_Ubelowdot                    = 0x1ee4,    /* X11 keysym = 0x1001ee4: Ụ */
    IM_KEY_ubelowdot                    = 0x1ee5,    /* X11 keysym = 0x1001ee5: ụ */
    IM_KEY_Uhook                        = 0x1ee6,    /* X11 keysym = 0x1001ee6: Ủ */
    IM_KEY_uhook                        = 0x1ee7,    /* X11 keysym = 0x1001ee7: ủ */
    IM_KEY_Uhornacute                   = 0x1ee8,    /* X11 keysym = 0x1001ee8: Ứ */
    IM_KEY_uhornacute                   = 0x1ee9,    /* X11 keysym = 0x1001ee9: ứ */
    IM_KEY_Uhorngrave                   = 0x1eea,    /* X11 keysym = 0x1001eea: Ừ */
    IM_KEY_uhorngrave                   = 0x1eeb,    /* X11 keysym = 0x1001eeb: ừ */
    IM_KEY_Uhornhook                    = 0x1eec,    /* X11 keysym = 0x1001eec: Ử */
    IM_KEY_uhornhook                    = 0x1eed,    /* X11 keysym = 0x1001eed: ử */
    IM_KEY_Uhorntilde                   = 0x1eee,    /* X11 keysym = 0x1001eee: Ữ */
    IM_KEY_uhorntilde                   = 0x1eef,    /* X11 keysym = 0x1001eef: ữ */
    IM_KEY_Uhornbelowdot                = 0x1ef0,    /* X11 keysym = 0x1001ef0: Ự */
    IM_KEY_uhornbelowdot                = 0x1ef1,    /* X11 keysym = 0x1001ef1: ự */
    IM_KEY_Ygrave                       = 0x1ef2,    /* X11 keysym = 0x1001ef2: Ỳ */
    IM_KEY_ygrave                       = 0x1ef3,    /* X11 keysym = 0x1001ef3: ỳ */
    IM_KEY_Ybelowdot                    = 0x1ef4,    /* X11 keysym = 0x1001ef4: Ỵ */
    IM_KEY_ybelowdot                    = 0x1ef5,    /* X11 keysym = 0x1001ef5: ỵ */
    IM_KEY_Yhook                        = 0x1ef6,    /* X11 keysym = 0x1001ef6: Ỷ */
    IM_KEY_yhook                        = 0x1ef7,    /* X11 keysym = 0x1001ef7: ỷ */
    IM_KEY_Ytilde                       = 0x1ef8,    /* X11 keysym = 0x1001ef8: Ỹ */
    IM_KEY_ytilde                       = 0x1ef9,    /* X11 keysym = 0x1001ef9: ỹ */
    IM_KEY_enspace                      = 0x2002,    /* X11 keysym = 0x0aa2:   */
    IM_KEY_emspace                      = 0x2003,    /* X11 keysym = 0x0aa1:   */
    IM_KEY_em3space                     = 0x2004,    /* X11 keysym = 0x0aa3:   */
    IM_KEY_em4space                     = 0x2005,    /* X11 keysym = 0x0aa4:   */
    IM_KEY_digitspace                   = 0x2007,    /* X11 keysym = 0x0aa5:   */
    IM_KEY_punctspace                   = 0x2008,    /* X11 keysym = 0x0aa6:   */
    IM_KEY_thinspace                    = 0x2009,    /* X11 keysym = 0x0aa7:   */
    IM_KEY_hairspace                    = 0x200a,    /* X11 keysym = 0x0aa8:   */
    IM_KEY_figdash                      = 0x2012,    /* X11 keysym = 0x0abb: ‒ */
    IM_KEY_endash                       = 0x2013,    /* X11 keysym = 0x0aaa: – */
    IM_KEY_emdash                       = 0x2014,    /* X11 keysym = 0x0aa9: — */
    IM_KEY_Greek_horizbar               = 0x2015,    /* X11 keysym = 0x07af: ― */
    IM_KEY_hebrew_doublelowline         = 0x2017,    /* X11 keysym = 0x0cdf: ‗ */
    IM_KEY_leftsinglequotemark          = 0x2018,    /* X11 keysym = 0x0ad0: ‘ */
    IM_KEY_rightsinglequotemark         = 0x2019,    /* X11 keysym = 0x0ad1: ’ */
    IM_KEY_singlelowquotemark           = 0x201a,    /* X11 keysym = 0x0afd: ‚ */
    IM_KEY_leftdoublequotemark          = 0x201c,    /* X11 keysym = 0x0ad2: “ */
    IM_KEY_rightdoublequotemark         = 0x201d,    /* X11 keysym = 0x0ad3: ” */
    IM_KEY_doublelowquotemark           = 0x201e,    /* X11 keysym = 0x0afe: „ */
    IM_KEY_dagger                       = 0x2020,    /* X11 keysym = 0x0af1: † */
    IM_KEY_doubledagger                 = 0x2021,    /* X11 keysym = 0x0af2: ‡ */
    IM_KEY_enfilledcircbullet           = 0x2022,    /* X11 keysym = 0x0ae6: • */
    IM_KEY_doubbaselinedot              = 0x2025,    /* X11 keysym = 0x0aaf: ‥ */
    IM_KEY_ellipsis                     = 0x2026,    /* X11 keysym = 0x0aae: … */
    IM_KEY_minutes                      = 0x2032,    /* X11 keysym = 0x0ad6: ′ */
    IM_KEY_seconds                      = 0x2033,    /* X11 keysym = 0x0ad7: ″ */
    IM_KEY_caret                        = 0x2038,    /* X11 keysym = 0x0afc: ‸ */
    IM_KEY_overline                     = 0x203e,    /* X11 keysym = 0x047e: ‾ */
    IM_KEY_zerosuperior                 = 0x2070,    /* X11 keysym = 0x1002070: ⁰ */
    IM_KEY_foursuperior                 = 0x2074,    /* X11 keysym = 0x1002074: ⁴ */
    IM_KEY_fivesuperior                 = 0x2075,    /* X11 keysym = 0x1002075: ⁵ */
    IM_KEY_sixsuperior                  = 0x2076,    /* X11 keysym = 0x1002076: ⁶ */
    IM_KEY_sevensuperior                = 0x2077,    /* X11 keysym = 0x1002077: ⁷ */
    IM_KEY_eightsuperior                = 0x2078,    /* X11 keysym = 0x1002078: ⁸ */
    IM_KEY_ninesuperior                 = 0x2079,    /* X11 keysym = 0x1002079: ⁹ */
    IM_KEY_zerosubscript                = 0x2080,    /* X11 keysym = 0x1002080: ₀ */
    IM_KEY_onesubscript                 = 0x2081,    /* X11 keysym = 0x1002081: ₁ */
    IM_KEY_twosubscript                 = 0x2082,    /* X11 keysym = 0x1002082: ₂ */
    IM_KEY_threesubscript               = 0x2083,    /* X11 keysym = 0x1002083: ₃ */
    IM_KEY_foursubscript                = 0x2084,    /* X11 keysym = 0x1002084: ₄ */
    IM_KEY_fivesubscript                = 0x2085,    /* X11 keysym = 0x1002085: ₅ */
    IM_KEY_sixsubscript                 = 0x2086,    /* X11 keysym = 0x1002086: ₆ */
    IM_KEY_sevensubscript               = 0x2087,    /* X11 keysym = 0x1002087: ₇ */
    IM_KEY_eightsubscript               = 0x2088,    /* X11 keysym = 0x1002088: ₈ */
    IM_KEY_ninesubscript                = 0x2089,    /* X11 keysym = 0x1002089: ₉ */
    IM_KEY_EcuSign                      = 0x20a0,    /* X11 keysym = 0x10020a0: ₠ */
    IM_KEY_ColonSign                    = 0x20a1,    /* X11 keysym = 0x10020a1: ₡ */
    IM_KEY_CruzeiroSign                 = 0x20a2,    /* X11 keysym = 0x10020a2: ₢ */
    IM_KEY_FFrancSign                   = 0x20a3,    /* X11 keysym = 0x10020a3: ₣ */
    IM_KEY_LiraSign                     = 0x20a4,    /* X11 keysym = 0x10020a4: ₤ */
    IM_KEY_MillSign                     = 0x20a5,    /* X11 keysym = 0x10020a5: ₥ */
    IM_KEY_NairaSign                    = 0x20a6,    /* X11 keysym = 0x10020a6: ₦ */
    IM_KEY_PesetaSign                   = 0x20a7,    /* X11 keysym = 0x10020a7: ₧ */
    IM_KEY_RupeeSign                    = 0x20a8,    /* X11 keysym = 0x10020a8: ₨ */
    IM_KEY_WonSign                      = 0x20a9,    /* X11 keysym = 0x10020a9: ₩ */
    IM_KEY_Korean_Won                   = 0x20a9,    /* X11 keysym = 0x0eff: ₩ */
    IM_KEY_NewSheqelSign                = 0x20aa,    /* X11 keysym = 0x10020aa: ₪ */
    IM_KEY_DongSign                     = 0x20ab,    /* X11 keysym = 0x10020ab: ₫ */
    IM_KEY_EuroSign                     = 0x20ac,    /* X11 keysym = 0x20ac: € */
    IM_KEY_careof                       = 0x2105,    /* X11 keysym = 0x0ab8: ℅ */
    IM_KEY_numerosign                   = 0x2116,    /* X11 keysym = 0x06b0: № */
    IM_KEY_phonographcopyright          = 0x2117,    /* X11 keysym = 0x0afb: ℗ */
    IM_KEY_prescription                 = 0x211e,    /* X11 keysym = 0x0ad4: ℞ */
    IM_KEY_trademark                    = 0x2122,    /* X11 keysym = 0x0ac9: ™ */
    IM_KEY_onethird                     = 0x2153,    /* X11 keysym = 0x0ab0: ⅓ */
    IM_KEY_twothirds                    = 0x2154,    /* X11 keysym = 0x0ab1: ⅔ */
    IM_KEY_onefifth                     = 0x2155,    /* X11 keysym = 0x0ab2: ⅕ */
    IM_KEY_twofifths                    = 0x2156,    /* X11 keysym = 0x0ab3: ⅖ */
    IM_KEY_threefifths                  = 0x2157,    /* X11 keysym = 0x0ab4: ⅗ */
    IM_KEY_fourfifths                   = 0x2158,    /* X11 keysym = 0x0ab5: ⅘ */
    IM_KEY_onesixth                     = 0x2159,    /* X11 keysym = 0x0ab6: ⅙ */
    IM_KEY_fivesixths                   = 0x215a,    /* X11 keysym = 0x0ab7: ⅚ */
    IM_KEY_oneeighth                    = 0x215b,    /* X11 keysym = 0x0ac3: ⅛ */
    IM_KEY_threeeighths                 = 0x215c,    /* X11 keysym = 0x0ac4: ⅜ */
    IM_KEY_fiveeighths                  = 0x215d,    /* X11 keysym = 0x0ac5: ⅝ */
    IM_KEY_seveneighths                 = 0x215e,    /* X11 keysym = 0x0ac6: ⅞ */
    IM_KEY_leftarrow                    = 0x2190,    /* X11 keysym = 0x08fb: ← */
    IM_KEY_uparrow                      = 0x2191,    /* X11 keysym = 0x08fc: ↑ */
    IM_KEY_rightarrow                   = 0x2192,    /* X11 keysym = 0x08fd: → */
    IM_KEY_downarrow                    = 0x2193,    /* X11 keysym = 0x08fe: ↓ */
    IM_KEY_implies                      = 0x21d2,    /* X11 keysym = 0x08ce: ⇒ */
    IM_KEY_ifonlyif                     = 0x21d4,    /* X11 keysym = 0x08cd: ⇔ */
    IM_KEY_partdifferential             = 0x2202,    /* X11 keysym = 0x1002202: ∂ */
    IM_KEY_partialderivative            = 0x2202,    /* X11 keysym = 0x08ef: ∂ */
    IM_KEY_emptyset                     = 0x2205,    /* X11 keysym = 0x1002205: ∅ */
    IM_KEY_nabla                        = 0x2207,    /* X11 keysym = 0x08c5: ∇ */
    IM_KEY_elementof                    = 0x2208,    /* X11 keysym = 0x1002208: ∈ */
    IM_KEY_notelementof                 = 0x2209,    /* X11 keysym = 0x1002209: ∉ */
    IM_KEY_containsas                   = 0x220b,    /* X11 keysym = 0x100220b: ∋ */
    IM_KEY_jot                          = 0x2218,    /* X11 keysym = 0x0bca: ∘ */
    IM_KEY_squareroot                   = 0x221a,    /* X11 keysym = 0x100221a: √ */
    IM_KEY_radical                      = 0x221a,    /* X11 keysym = 0x08d6: √ */
    IM_KEY_cuberoot                     = 0x221b,    /* X11 keysym = 0x100221b: ∛ */
    IM_KEY_fourthroot                   = 0x221c,    /* X11 keysym = 0x100221c: ∜ */
    IM_KEY_variation                    = 0x221d,    /* X11 keysym = 0x08c1: ∝ */
    IM_KEY_infinity                     = 0x221e,    /* X11 keysym = 0x08c2: ∞ */
    IM_KEY_logicaland                   = 0x2227,    /* X11 keysym = 0x08de: ∧ */
    IM_KEY_upcaret                      = 0x2227,    /* X11 keysym = 0x0ba9: ∧ */
    IM_KEY_logicalor                    = 0x2228,    /* X11 keysym = 0x08df: ∨ */
    IM_KEY_downcaret                    = 0x2228,    /* X11 keysym = 0x0ba8: ∨ */
    IM_KEY_upshoe                       = 0x2229,    /* X11 keysym = 0x0bc3: ∩ */
    IM_KEY_intersection                 = 0x2229,    /* X11 keysym = 0x08dc: ∩ */
    IM_KEY_union                        = 0x222a,    /* X11 keysym = 0x08dd: ∪ */
    IM_KEY_downshoe                     = 0x222a,    /* X11 keysym = 0x0bd6: ∪ */
    IM_KEY_integral                     = 0x222b,    /* X11 keysym = 0x08bf: ∫ */
    IM_KEY_dintegral                    = 0x222c,    /* X11 keysym = 0x100222c: ∬ */
    IM_KEY_tintegral                    = 0x222d,    /* X11 keysym = 0x100222d: ∭ */
    IM_KEY_therefore                    = 0x2234,    /* X11 keysym = 0x08c0: ∴ */
    IM_KEY_because                      = 0x2235,    /* X11 keysym = 0x1002235: ∵ */
    IM_KEY_approximate                  = 0x223c,    /* X11 keysym = 0x08c8: ∼ */
    IM_KEY_similarequal                 = 0x2243,    /* X11 keysym = 0x08c9: ≃ */
    IM_KEY_approxeq                     = 0x2245,    /* X11 keysym = 0x1002248: ≅ */
    IM_KEY_notapproxeq                  = 0x2247,    /* X11 keysym = 0x1002247: ≇ */
    IM_KEY_notequal                     = 0x2260,    /* X11 keysym = 0x08bd: ≠ */
    IM_KEY_identical                    = 0x2261,    /* X11 keysym = 0x08cf: ≡ */
    IM_KEY_notidentical                 = 0x2262,    /* X11 keysym = 0x1002262: ≢ */
    IM_KEY_stricteq                     = 0x2263,    /* X11 keysym = 0x1002263: ≣ */
    IM_KEY_lessthanequal                = 0x2264,    /* X11 keysym = 0x08bc: ≤ */
    IM_KEY_greaterthanequal             = 0x2265,    /* X11 keysym = 0x08be: ≥ */
    IM_KEY_includedin                   = 0x2282,    /* X11 keysym = 0x08da: ⊂ */
    IM_KEY_leftshoe                     = 0x2282,    /* X11 keysym = 0x0bda: ⊂ */
    IM_KEY_includes                     = 0x2283,    /* X11 keysym = 0x08db: ⊃ */
    IM_KEY_rightshoe                    = 0x2283,    /* X11 keysym = 0x0bd8: ⊃ */
    IM_KEY_lefttack                     = 0x22a2,    /* X11 keysym = 0x0bdc: ⊢ */
    IM_KEY_righttack                    = 0x22a3,    /* X11 keysym = 0x0bfc: ⊣ */
    IM_KEY_uptack                       = 0x22a4,    /* X11 keysym = 0x0bce: ⊤ */
    IM_KEY_downtack                     = 0x22a5,    /* X11 keysym = 0x0bc2: ⊥ */
    IM_KEY_upstile                      = 0x2308,    /* X11 keysym = 0x0bd3: ⌈ */
    IM_KEY_downstile                    = 0x230a,    /* X11 keysym = 0x0bc4: ⌊ */
    IM_KEY_telephonerecorder            = 0x2315,    /* X11 keysym = 0x0afa: ⌕ */
    IM_KEY_topintegral                  = 0x2320,    /* X11 keysym = 0x08a4: ⌠ */
    IM_KEY_botintegral                  = 0x2321,    /* X11 keysym = 0x08a5: ⌡ */
    IM_KEY_quad                         = 0x2395,    /* X11 keysym = 0x0bcc: ⎕ */
    IM_KEY_topleftparens                = 0x239b,    /* X11 keysym = 0x08ab: ⎛ */
    IM_KEY_botleftparens                = 0x239d,    /* X11 keysym = 0x08ac: ⎝ */
    IM_KEY_toprightparens               = 0x239e,    /* X11 keysym = 0x08ad: ⎞ */
    IM_KEY_botrightparens               = 0x23a0,    /* X11 keysym = 0x08ae: ⎠ */
    IM_KEY_topleftsqbracket             = 0x23a1,    /* X11 keysym = 0x08a7: ⎡ */
    IM_KEY_botleftsqbracket             = 0x23a3,    /* X11 keysym = 0x08a8: ⎣ */
    IM_KEY_toprightsqbracket            = 0x23a4,    /* X11 keysym = 0x08a9: ⎤ */
    IM_KEY_botrightsqbracket            = 0x23a6,    /* X11 keysym = 0x08aa: ⎦ */
    IM_KEY_leftmiddlecurlybrace         = 0x23a8,    /* X11 keysym = 0x08af: ⎨ */
    IM_KEY_rightmiddlecurlybrace        = 0x23ac,    /* X11 keysym = 0x08b0: ⎬ */
    IM_KEY_leftradical                  = 0x23b7,    /* X11 keysym = 0x08a1: ⎷ */
    IM_KEY_horizlinescan1               = 0x23ba,    /* X11 keysym = 0x09ef: ⎺ */
    IM_KEY_horizlinescan3               = 0x23bb,    /* X11 keysym = 0x09f0: ⎻ */
    IM_KEY_horizlinescan7               = 0x23bc,    /* X11 keysym = 0x09f2: ⎼ */
    IM_KEY_horizlinescan9               = 0x23bd,    /* X11 keysym = 0x09f3: ⎽ */
    IM_KEY_ht                           = 0x2409,    /* X11 keysym = 0x09e2: ␉ */
    IM_KEY_lf                           = 0x240a,    /* X11 keysym = 0x09e5: ␊ */
    IM_KEY_vt                           = 0x240b,    /* X11 keysym = 0x09e9: ␋ */
    IM_KEY_ff                           = 0x240c,    /* X11 keysym = 0x09e3: ␌ */
    IM_KEY_cr                           = 0x240d,    /* X11 keysym = 0x09e4: ␍ */
    IM_KEY_blank                        = 0x2422,    /* X11 keysym = 0x09df: ␢ */
    IM_KEY_signifblank                  = 0x2423,    /* X11 keysym = 0x0aac: ␣ */
    IM_KEY_nl                           = 0x2424,    /* X11 keysym = 0x09e8: ␤ */
    IM_KEY_horizlinescan5               = 0x2500,    /* X11 keysym = 0x09f1: ─ */
    IM_KEY_horizconnector               = 0x2500,    /* X11 keysym = 0x08a3: ─ */
    IM_KEY_vertbar                      = 0x2502,    /* X11 keysym = 0x09f8: │ */
    IM_KEY_vertconnector                = 0x2502,    /* X11 keysym = 0x08a6: │ */
    IM_KEY_upleftcorner                 = 0x250c,    /* X11 keysym = 0x09ec: ┌ */
    IM_KEY_topleftradical               = 0x250c,    /* X11 keysym = 0x08a2: ┌ */
    IM_KEY_uprightcorner                = 0x2510,    /* X11 keysym = 0x09eb: ┐ */
    IM_KEY_lowleftcorner                = 0x2514,    /* X11 keysym = 0x09ed: └ */
    IM_KEY_lowrightcorner               = 0x2518,    /* X11 keysym = 0x09ea: ┘ */
    IM_KEY_leftt                        = 0x251c,    /* X11 keysym = 0x09f4: ├ */
    IM_KEY_rightt                       = 0x2524,    /* X11 keysym = 0x09f5: ┤ */
    IM_KEY_topt                         = 0x252c,    /* X11 keysym = 0x09f7: ┬ */
    IM_KEY_bott                         = 0x2534,    /* X11 keysym = 0x09f6: ┴ */
    IM_KEY_crossinglines                = 0x253c,    /* X11 keysym = 0x09ee: ┼ */
    IM_KEY_checkerboard                 = 0x2592,    /* X11 keysym = 0x09e1: ▒ */
    IM_KEY_enfilledsqbullet             = 0x25aa,    /* X11 keysym = 0x0ae7: ▪ */
    IM_KEY_enopensquarebullet           = 0x25ab,    /* X11 keysym = 0x0ae1: ▫ */
    IM_KEY_filledrectbullet             = 0x25ac,    /* X11 keysym = 0x0adb: ▬ */
    IM_KEY_openrectbullet               = 0x25ad,    /* X11 keysym = 0x0ae2: ▭ */
    IM_KEY_emfilledrect                 = 0x25ae,    /* X11 keysym = 0x0adf: ▮ */
    IM_KEY_emopenrectangle              = 0x25af,    /* X11 keysym = 0x0acf: ▯ */
    IM_KEY_filledtribulletup            = 0x25b2,    /* X11 keysym = 0x0ae8: ▲ */
    IM_KEY_opentribulletup              = 0x25b3,    /* X11 keysym = 0x0ae3: △ */
    IM_KEY_filledrighttribullet         = 0x25b6,    /* X11 keysym = 0x0add: ▶ */
    IM_KEY_rightopentriangle            = 0x25b7,    /* X11 keysym = 0x0acd: ▷ */
    IM_KEY_filledtribulletdown          = 0x25bc,    /* X11 keysym = 0x0ae9: ▼ */
    IM_KEY_opentribulletdown            = 0x25bd,    /* X11 keysym = 0x0ae4: ▽ */
    IM_KEY_filledlefttribullet          = 0x25c0,    /* X11 keysym = 0x0adc: ◀ */
    IM_KEY_leftopentriangle             = 0x25c1,    /* X11 keysym = 0x0acc: ◁ */
    IM_KEY_soliddiamond                 = 0x25c6,    /* X11 keysym = 0x09e0: ◆ */
    IM_KEY_emopencircle                 = 0x25cb,    /* X11 keysym = 0x0ace: ○ */
    IM_KEY_circle                       = 0x25cb,    /* X11 keysym = 0x0bcf: ○ */
    IM_KEY_emfilledcircle               = 0x25cf,    /* X11 keysym = 0x0ade: ● */
    IM_KEY_enopencircbullet             = 0x25e6,    /* X11 keysym = 0x0ae0: ◦ */
    IM_KEY_openstar                     = 0x2606,    /* X11 keysym = 0x0ae5: ☆ */
    IM_KEY_telephone                    = 0x260e,    /* X11 keysym = 0x0af9: ☎ */
    IM_KEY_signaturemark                = 0x2613,    /* X11 keysym = 0x0aca: ☓ */
    IM_KEY_leftpointer                  = 0x261c,    /* X11 keysym = 0x0aea: ☜ */
    IM_KEY_rightpointer                 = 0x261e,    /* X11 keysym = 0x0aeb: ☞ */
    IM_KEY_femalesymbol                 = 0x2640,    /* X11 keysym = 0x0af8: ♀ */
    IM_KEY_malesymbol                   = 0x2642,    /* X11 keysym = 0x0af7: ♂ */
    IM_KEY_club                         = 0x2663,    /* X11 keysym = 0x0aec: ♣ */
    IM_KEY_heart                        = 0x2665,    /* X11 keysym = 0x0aee: ♥ */
    IM_KEY_diamond                      = 0x2666,    /* X11 keysym = 0x0aed: ♦ */
    IM_KEY_musicalflat                  = 0x266d,    /* X11 keysym = 0x0af6: ♭ */
    IM_KEY_musicalsharp                 = 0x266f,    /* X11 keysym = 0x0af5: ♯ */
    IM_KEY_checkmark                    = 0x2713,    /* X11 keysym = 0x0af3: ✓ */
    IM_KEY_ballotcross                  = 0x2717,    /* X11 keysym = 0x0af4: ✗ */
    IM_KEY_latincross                   = 0x271d,    /* X11 keysym = 0x0ad9: ✝ */
    IM_KEY_maltesecross                 = 0x2720,    /* X11 keysym = 0x0af0: ✠ */
    IM_KEY_leftanglebracket             = 0x27e8,    /* X11 keysym = 0x0abc: ⟨ */
    IM_KEY_rightanglebracket            = 0x27e9,    /* X11 keysym = 0x0abe: ⟩ */
    IM_KEY_kana_comma                   = 0x3001,    /* X11 keysym = 0x04a4: 、 */
    IM_KEY_kana_fullstop                = 0x3002,    /* X11 keysym = 0x04a1: 。 */
    IM_KEY_kana_openingbracket          = 0x300c,    /* X11 keysym = 0x04a2: 「 */
    IM_KEY_kana_closingbracket          = 0x300d,    /* X11 keysym = 0x04a3: 」 */
    IM_KEY_voicedsound                  = 0x309b,    /* X11 keysym = 0x04de: ゛ */
    IM_KEY_semivoicedsound              = 0x309c,    /* X11 keysym = 0x04df: ゜ */
    IM_KEY_kana_a                       = 0x30a1,    /* X11 keysym = 0x04a7: ァ */
    IM_KEY_kana_A                       = 0x30a2,    /* X11 keysym = 0x04b1: ア */
    IM_KEY_kana_i                       = 0x30a3,    /* X11 keysym = 0x04a8: ィ */
    IM_KEY_kana_I                       = 0x30a4,    /* X11 keysym = 0x04b2: イ */
    IM_KEY_kana_u                       = 0x30a5,    /* X11 keysym = 0x04a9: ゥ */
    IM_KEY_kana_U                       = 0x30a6,    /* X11 keysym = 0x04b3: ウ */
    IM_KEY_kana_e                       = 0x30a7,    /* X11 keysym = 0x04aa: ェ */
    IM_KEY_kana_E                       = 0x30a8,    /* X11 keysym = 0x04b4: エ */
    IM_KEY_kana_o                       = 0x30a9,    /* X11 keysym = 0x04ab: ォ */
    IM_KEY_kana_O                       = 0x30aa,    /* X11 keysym = 0x04b5: オ */
    IM_KEY_kana_KA                      = 0x30ab,    /* X11 keysym = 0x04b6: カ */
    IM_KEY_kana_KI                      = 0x30ad,    /* X11 keysym = 0x04b7: キ */
    IM_KEY_kana_KU                      = 0x30af,    /* X11 keysym = 0x04b8: ク */
    IM_KEY_kana_KE                      = 0x30b1,    /* X11 keysym = 0x04b9: ケ */
    IM_KEY_kana_KO                      = 0x30b3,    /* X11 keysym = 0x04ba: コ */
    IM_KEY_kana_SA                      = 0x30b5,    /* X11 keysym = 0x04bb: サ */
    IM_KEY_kana_SHI                     = 0x30b7,    /* X11 keysym = 0x04bc: シ */
    IM_KEY_kana_SU                      = 0x30b9,    /* X11 keysym = 0x04bd: ス */
    IM_KEY_kana_SE                      = 0x30bb,    /* X11 keysym = 0x04be: セ */
    IM_KEY_kana_SO                      = 0x30bd,    /* X11 keysym = 0x04bf: ソ */
    IM_KEY_kana_TA                      = 0x30bf,    /* X11 keysym = 0x04c0: タ */
    IM_KEY_kana_CHI                     = 0x30c1,    /* X11 keysym = 0x04c1: チ */
    IM_KEY_kana_tsu                     = 0x30c3,    /* X11 keysym = 0x04af: ッ */
    IM_KEY_kana_TSU                     = 0x30c4,    /* X11 keysym = 0x04c2: ツ */
    IM_KEY_kana_TE                      = 0x30c6,    /* X11 keysym = 0x04c3: テ */
    IM_KEY_kana_TO                      = 0x30c8,    /* X11 keysym = 0x04c4: ト */
    IM_KEY_kana_NA                      = 0x30ca,    /* X11 keysym = 0x04c5: ナ */
    IM_KEY_kana_NI                      = 0x30cb,    /* X11 keysym = 0x04c6: ニ */
    IM_KEY_kana_NU                      = 0x30cc,    /* X11 keysym = 0x04c7: ヌ */
    IM_KEY_kana_NE                      = 0x30cd,    /* X11 keysym = 0x04c8: ネ */
    IM_KEY_kana_NO                      = 0x30ce,    /* X11 keysym = 0x04c9: ノ */
    IM_KEY_kana_HA                      = 0x30cf,    /* X11 keysym = 0x04ca: ハ */
    IM_KEY_kana_HI                      = 0x30d2,    /* X11 keysym = 0x04cb: ヒ */
    IM_KEY_kana_FU                      = 0x30d5,    /* X11 keysym = 0x04cc: フ */
    IM_KEY_kana_HE                      = 0x30d8,    /* X11 keysym = 0x04cd: ヘ */
    IM_KEY_kana_HO                      = 0x30db,    /* X11 keysym = 0x04ce: ホ */
    IM_KEY_kana_MA                      = 0x30de,    /* X11 keysym = 0x04cf: マ */
    IM_KEY_kana_MI                      = 0x30df,    /* X11 keysym = 0x04d0: ミ */
    IM_KEY_kana_MU                      = 0x30e0,    /* X11 keysym = 0x04d1: ム */
    IM_KEY_kana_ME                      = 0x30e1,    /* X11 keysym = 0x04d2: メ */
    IM_KEY_kana_MO                      = 0x30e2,    /* X11 keysym = 0x04d3: モ */
    IM_KEY_kana_ya                      = 0x30e3,    /* X11 keysym = 0x04ac: ャ */
    IM_KEY_kana_YA                      = 0x30e4,    /* X11 keysym = 0x04d4: ヤ */
    IM_KEY_kana_yu                      = 0x30e5,    /* X11 keysym = 0x04ad: ュ */
    IM_KEY_kana_YU                      = 0x30e6,    /* X11 keysym = 0x04d5: ユ */
    IM_KEY_kana_yo                      = 0x30e7,    /* X11 keysym = 0x04ae: ョ */
    IM_KEY_kana_YO                      = 0x30e8,    /* X11 keysym = 0x04d6: ヨ */
    IM_KEY_kana_RA                      = 0x30e9,    /* X11 keysym = 0x04d7: ラ */
    IM_KEY_kana_RI                      = 0x30ea,    /* X11 keysym = 0x04d8: リ */
    IM_KEY_kana_RU                      = 0x30eb,    /* X11 keysym = 0x04d9: ル */
    IM_KEY_kana_RE                      = 0x30ec,    /* X11 keysym = 0x04da: レ */
    IM_KEY_kana_RO                      = 0x30ed,    /* X11 keysym = 0x04db: ロ */
    IM_KEY_kana_WA                      = 0x30ef,    /* X11 keysym = 0x04dc: ワ */
    IM_KEY_kana_WO                      = 0x30f2,    /* X11 keysym = 0x04a6: ヲ */
    IM_KEY_kana_N                       = 0x30f3,    /* X11 keysym = 0x04dd: ン */
    IM_KEY_kana_conjunctive             = 0x30fb,    /* X11 keysym = 0x04a5: ・ */
    IM_KEY_prolongedsound               = 0x30fc,    /* X11 keysym = 0x04b0: ー */
    IM_KEY_Hangul_Kiyeog                = 0x3131,    /* X11 keysym = 0x0ea1: ㄱ */
    IM_KEY_Hangul_SsangKiyeog           = 0x3132,    /* X11 keysym = 0x0ea2: ㄲ */
    IM_KEY_Hangul_KiyeogSios            = 0x3133,    /* X11 keysym = 0x0ea3: ㄳ */
    IM_KEY_Hangul_Nieun                 = 0x3134,    /* X11 keysym = 0x0ea4: ㄴ */
    IM_KEY_Hangul_NieunJieuj            = 0x3135,    /* X11 keysym = 0x0ea5: ㄵ */
    IM_KEY_Hangul_NieunHieuh            = 0x3136,    /* X11 keysym = 0x0ea6: ㄶ */
    IM_KEY_Hangul_Dikeud                = 0x3137,    /* X11 keysym = 0x0ea7: ㄷ */
    IM_KEY_Hangul_SsangDikeud           = 0x3138,    /* X11 keysym = 0x0ea8: ㄸ */
    IM_KEY_Hangul_Rieul                 = 0x3139,    /* X11 keysym = 0x0ea9: ㄹ */
    IM_KEY_Hangul_RieulKiyeog           = 0x313a,    /* X11 keysym = 0x0eaa: ㄺ */
    IM_KEY_Hangul_RieulMieum            = 0x313b,    /* X11 keysym = 0x0eab: ㄻ */
    IM_KEY_Hangul_RieulPieub            = 0x313c,    /* X11 keysym = 0x0eac: ㄼ */
    IM_KEY_Hangul_RieulSios             = 0x313d,    /* X11 keysym = 0x0ead: ㄽ */
    IM_KEY_Hangul_RieulTieut            = 0x313e,    /* X11 keysym = 0x0eae: ㄾ */
    IM_KEY_Hangul_RieulPhieuf           = 0x313f,    /* X11 keysym = 0x0eaf: ㄿ */
    IM_KEY_Hangul_RieulHieuh            = 0x3140,    /* X11 keysym = 0x0eb0: ㅀ */
    IM_KEY_Hangul_Mieum                 = 0x3141,    /* X11 keysym = 0x0eb1: ㅁ */
    IM_KEY_Hangul_Pieub                 = 0x3142,    /* X11 keysym = 0x0eb2: ㅂ */
    IM_KEY_Hangul_SsangPieub            = 0x3143,    /* X11 keysym = 0x0eb3: ㅃ */
    IM_KEY_Hangul_PieubSios             = 0x3144,    /* X11 keysym = 0x0eb4: ㅄ */
    IM_KEY_Hangul_Sios                  = 0x3145,    /* X11 keysym = 0x0eb5: ㅅ */
    IM_KEY_Hangul_SsangSios             = 0x3146,    /* X11 keysym = 0x0eb6: ㅆ */
    IM_KEY_Hangul_Ieung                 = 0x3147,    /* X11 keysym = 0x0eb7: ㅇ */
    IM_KEY_Hangul_Jieuj                 = 0x3148,    /* X11 keysym = 0x0eb8: ㅈ */
    IM_KEY_Hangul_SsangJieuj            = 0x3149,    /* X11 keysym = 0x0eb9: ㅉ */
    IM_KEY_Hangul_Cieuc                 = 0x314a,    /* X11 keysym = 0x0eba: ㅊ */
    IM_KEY_Hangul_Khieuq                = 0x314b,    /* X11 keysym = 0x0ebb: ㅋ */
    IM_KEY_Hangul_Tieut                 = 0x314c,    /* X11 keysym = 0x0ebc: ㅌ */
    IM_KEY_Hangul_Phieuf                = 0x314d,    /* X11 keysym = 0x0ebd: ㅍ */
    IM_KEY_Hangul_Hieuh                 = 0x314e,    /* X11 keysym = 0x0ebe: ㅎ */
    IM_KEY_Hangul_A                     = 0x314f,    /* X11 keysym = 0x0ebf: ㅏ */
    IM_KEY_Hangul_AE                    = 0x3150,    /* X11 keysym = 0x0ec0: ㅐ */
    IM_KEY_Hangul_YA                    = 0x3151,    /* X11 keysym = 0x0ec1: ㅑ */
    IM_KEY_Hangul_YAE                   = 0x3152,    /* X11 keysym = 0x0ec2: ㅒ */
    IM_KEY_Hangul_EO                    = 0x3153,    /* X11 keysym = 0x0ec3: ㅓ */
    IM_KEY_Hangul_E                     = 0x3154,    /* X11 keysym = 0x0ec4: ㅔ */
    IM_KEY_Hangul_YEO                   = 0x3155,    /* X11 keysym = 0x0ec5: ㅕ */
    IM_KEY_Hangul_YE                    = 0x3156,    /* X11 keysym = 0x0ec6: ㅖ */
    IM_KEY_Hangul_O                     = 0x3157,    /* X11 keysym = 0x0ec7: ㅗ */
    IM_KEY_Hangul_WA                    = 0x3158,    /* X11 keysym = 0x0ec8: ㅘ */
    IM_KEY_Hangul_WAE                   = 0x3159,    /* X11 keysym = 0x0ec9: ㅙ */
    IM_KEY_Hangul_OE                    = 0x315a,    /* X11 keysym = 0x0eca: ㅚ */
    IM_KEY_Hangul_YO                    = 0x315b,    /* X11 keysym = 0x0ecb: ㅛ */
    IM_KEY_Hangul_U                     = 0x315c,    /* X11 keysym = 0x0ecc: ㅜ */
    IM_KEY_Hangul_WEO                   = 0x315d,    /* X11 keysym = 0x0ecd: ㅝ */
    IM_KEY_Hangul_WE                    = 0x315e,    /* X11 keysym = 0x0ece: ㅞ */
    IM_KEY_Hangul_WI                    = 0x315f,    /* X11 keysym = 0x0ecf: ㅟ */
    IM_KEY_Hangul_YU                    = 0x3160,    /* X11 keysym = 0x0ed0: ㅠ */
    IM_KEY_Hangul_EU                    = 0x3161,    /* X11 keysym = 0x0ed1: ㅡ */
    IM_KEY_Hangul_YI                    = 0x3162,    /* X11 keysym = 0x0ed2: ㅢ */
    IM_KEY_Hangul_I                     = 0x3163,    /* X11 keysym = 0x0ed3: ㅣ */
    IM_KEY_Hangul_RieulYeorinHieuh      = 0x316d,    /* X11 keysym = 0x0eef: ㅭ */
    IM_KEY_Hangul_SunkyeongeumMieum     = 0x3171,    /* X11 keysym = 0x0ef0: ㅱ */
    IM_KEY_Hangul_SunkyeongeumPieub     = 0x3178,    /* X11 keysym = 0x0ef1: ㅸ */
    IM_KEY_Hangul_PanSios               = 0x317f,    /* X11 keysym = 0x0ef2: ㅿ */
    IM_KEY_Hangul_SunkyeongeumPhieuf    = 0x3184,    /* X11 keysym = 0x0ef4: ㆄ */
    IM_KEY_Hangul_YeorinHieuh           = 0x3186,    /* X11 keysym = 0x0ef5: ㆆ */
    IM_KEY_Hangul_AraeA                 = 0x318d,    /* X11 keysym = 0x0ef6: ㆍ */
    IM_KEY_Hangul_AraeAE                = 0x318e,    /* X11 keysym = 0x0ef7: ㆎ */
} IMKeyCode;

/**
 * @brief Create a key value from a key code and a mask.
 */
#define im_key_new(code,mask)           (((code) & IM_KEY_CODE_MASK) | ((mask) & IM_KEY_ALL_MASKS))
/**
 * @brief Get key code of a key value.
 */
#define im_key_get_code(val)            ((val) & IM_KEY_CODE_MASK)
/**
 * @brief Get key masks of a key value.
 */
#define im_key_get_masks(val)           ((val) & IM_KEY_ALL_MASKS)
/**
 * @brief Check whether a mask is set for a key value or not.
 */
#define im_key_check_mask(val,mask)     (((val) & (mask)) == (mask))
/**
 * @brief Set the key code of a key value.
 */
#define im_key_set_code(val,code)       ((val) = (im_key_get_masks(val) | ((code) & IM_KEY_CODE_MASK)))
/**
 * @brief Set a mask of a key value.
 */
#define im_key_set_mask(val,mask)       ((val) |= ((mask) & IM_KEY_ALL_MASKS))
/**
 * @brief Clear a mask of a key value.
 */
#define im_key_clear_mask(val,mask)     ((val) &= ~((mask) & IM_KEY_ALL_MASKS))
/**
 * @brief Check whether a key is a key release event.
 */
#define im_key_is_release(val)          im_key_check_mask((val),IM_KEY_RELEASE_MASK)
#define im_key_is_shift_down(val)       im_key_check_mask((val),IM_KEY_SHIFT_MASK)
#define im_key_is_caps_lock_down(val)   im_key_check_mask((val),IM_KEY_CAPS_LOCK_MASK)
#define im_key_is_ctrl_down(val)        im_key_check_mask((val),IM_KEY_CTRL_MASK)
#define im_key_is_alt_down(val)         im_key_check_mask((val),IM_KEY_ALT_MASK)
#define im_key_is_meta_down(val)        im_key_check_mask((val),IM_KEY_META_MASK)
#define im_key_is_super_down(val)       im_key_check_mask((val),IM_KEY_SUPER_MASK)
#define im_key_is_hyper_down(val)       im_key_check_mask((val),IM_KEY_HYPER_MASK)
#define im_key_is_num_lock_down(val)    im_key_check_mask((val),IM_KEY_NUM_LOCK_MASK)

#define im_key_is_unicode(val)                              \
    ((im_key_get_code(val) < IM_KEY_SPECIAL_START) ||       \
    ((im_key_get_code(val) > IM_KEY_SPECIAL_END)  &&        \
     (im_key_get_code(val) <= IM_KEY_MAX_VALID_CODE)))

/**
 * @brief Get the name of a key value.
 *
 * The im_key_get_name() function
 *
 * If the specified keyval is not defined, im_key_get_name() returns NULL.
 *
 * @return The im_key_get_name() function returns
 * @return A newly created IMString object,
 *         must be released by caller.
 */
IMString*       im_key_get_name             (IMUInt32            keyval);

/**
 * @brief Get a key value by parsing a specified key name.
 */
IMUInt32        im_key_from_name            (const IMString     *name);

/**
 * @brief Convert a key code to X11 keysym.
 *
 * The im_key_code_to_x11keysym function returns the Keysym defined for the specified
 * KeyCode and the element of the KeyCode vector. If no symbol is defined, im_key_code_to_xkeysym
 * returns NoSymbol.
 *
 * TODO: move it into libimbus-x11
 *
 * @keycode Specifies the KeyCode.
 * @returns The im_key_code_to_x11keysym() function returns the Keysym defined for the specified
 * KeyCode. If no symbol is defined, im_key_code_to_x11keysym() returns NoSymbol.
 */
IMUInt32        im_key_code_to_x11keysym    (IMUInt32           keycode);

/**
 * @brief Convert a X11 keysym to key code.
 *
 * The im_key_code_from_x11keysym() function shall convert
 *
 * TODO: move it into libimbus-x11
 *
 * @x11ksysym Specifies the X11 KeySym
 * @returns KeyCode associated with X11 KeySym
 */
IMUInt32        im_key_code_from_x11keysym  (IMUInt32           x11keysym);


IM_END_DECLS
/** @} */

#endif
/*
vi:ts=4:nowrap:ai:expandtab
*/
